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; }
浙公网安备 33010602011771号