问题描述
IGraphicsContainerpGraphicsContainer=axMapControl2.MapasIGraphicsContainer;处提示报错引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常。将axMapControl2换成axMapControl1可以运行,代码应该没什么问题privatevoidaxMapControl1_OnExtentUpdated(objectsender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvente){//得到新范围IEnvelopepEnvelope=(IEnvelope)e.newEnvelope;IGraphicsContainerpGraphicsContainer=axMapControl2.MapasIGraphicsContainer;IActiveViewpActiveView=pGraphicsContainerasIActiveView;//在绘制前,清除axMapControl2中的任何图形元素pGraphicsContainer.DeleteAllElements();IRectangleElementpRectangleEle=newRectangleElementClass();IElementpElement=pRectangleEleasIElement;pElement.Geometry=pEnvelope;//设置鹰眼图中的红线框IRgbColorpColor=newRgbColor();pColor.Red=255;pColor.Green=0;pColor.Blue=0;pColor.Transparency=255;//产生一个线符号对象ILineSymbolpOutline=newSimpleLineSymbol();pOutline.Width=3;pOutline.Color=pColor;//设置颜色属性pColor=newRgbColor();pColor.Red=255;pColor.Green=0;pColor.Blue=0;pColor.Transparency=0;//设置填充符号的属性IFillSymbolpFillSymbol=newSimpleFillSymbol();pFillSymbol.Color=pColor;pFillSymbol.Outline=pOutline;IFillShapeElementpFillShapeEle=pElementasIFillShapeElement;pFillShapeEle.Symbol=pFillSymbol;pGraphicsContainer.AddElement((IElement)pFillShapeEle,0);pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null,null);}privatevoidaxMapControl1_OnMapReplaced(objectsender,IMapControlEvents2_OnMapReplacedEvente){if(axMapControl1.LayerCount>0){axMapControl2.Map=newMap();for(inti=0;i<=axMapControl1.Map.LayerCount-1;i++){axMapControl2.AddLayer(axMapControl1.get_Layer(i));}axMapControl2.Extent=axMapControl1.Extent;axMapControl2.Refresh();}}privatevoidaxMapControl2_OnMouseDown(objectsender,IMapControlEvents2_OnMouseDownEvente){if(axMapControl2.Map.LayerCount>0){if(e.button==1){IPointpPoint=newPointClass();pPoint.PutCoords(e.mapX,e.mapY);axMapControl1.CenterAt(pPoint);axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null,null);}elseif(e.button==2){IEnvelopepEnv=axMapControl2.TrackRectangle();axMapControl1.Extent=pEnv;axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null,null);}}}privatevoidaxMapControl2_OnMouseMove(objectsender,IMapControlEvents2_OnMouseMoveEvente){if(e.button==1){IPointpPoint=newPointClass();pPoint.PutCoords(e.mapX,e.mapY);axMapControl1.CenterAt(pPoint);axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null,null);}}