private void axMapControl1_OnOleDrop(object sender,
ESRI.ArcGIS.Controls.IMapControlEvents2_OnOleDropEvent e)
{
IDataObjectHelper dataObject = (IDataObjectHelper)e.dataObjectHelper;
esriControlsDropAction action = e.dropAction;
e.effect = (int)esriControlsDragDropEffect.esriDragDropNone;
if (action == esriControlsDropAction.esriDropEnter)
{
if (dataObject.CanGetFiles() | dataObject.CanGetNames())
{
m_Effect = esriControlsDragDropEffect.esriDragDropCopy;
}
}
if (action == esriControlsDropAction.esriDropOver)
{
e.effect = (int)m_Effect;
}
if (action == esriControlsDropAction.esriDropped)
{
if (dataObject.CanGetFiles() == true)
{
System.Array filePaths = System.Array.CreateInstance(typeof(string), 0,
0);
filePaths = (System.Array)dataObject.GetFiles();
for (int i = 0; i <= filePaths.Length - 1; i++)
{
if (axMapControl1.CheckMxFile(filePaths.GetValue(i).ToString()) ==
true)
{
try
{
axMapControl1.LoadMxFile(filePaths.GetValue(i).ToString(),
Type.Missing, "");
}
catch (System.Exception ex)
{
MessageBox.Show("Error:" + ex.Message);
return ;
}
}
else
{
IFileName fileName = new FileNameClass();
fileName.Path = filePaths.GetValue(i).ToString();
CreateLayer((IName)fileName);
}
}
}
else if (dataObject.CanGetNames() == true)
{
IEnumName enumName = dataObject.GetNames();
enumName.Reset();
IName name = enumName.Next();
while (name != null)
{
CreateLayer(name);
name = enumName.Next();
}
}
}
}
private void CreateLayer(IName name)
{
axMapControl1.MousePointer = esriControlsMousePointer.esriPointerHourglass;
ILayerFactoryHelper layerFactoryHelper = new LayerFactoryHelperClass();
ILayerFatcoryHelper interface.
try
{
IEnumLayer enumLayer = layerFactoryHelper.CreateLayersFromName(name);
enumLayer.Reset();
ILayer layer = enumLayer.Next();
while (layer != null)
{
axMapControl1.AddLayer(layer, 0);
layer = enumLayer.Next();
}
}
catch (System.Exception ex)
{
MessageBox.Show("Error:" + ex.Message);
}
axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault;
}