vs2003转vs2005(C#),ArcEngine报事件同时存在于AxMapControl,MapControl出错

从网上下载的C#+AO源代码很多都是在VS2003开发的,而转到VS2005,AE9.2环境下,会出如下现报错的内容:
The type 'ESRI.ArcGIS.MapControl.IMapControlEvents2_OnOleDropEventHandler' exists in both 'e:\Program Files\ArcGIS\DotNet\ESRI.ArcGIS.MapControl.dll' and 'e:\ProgramFiles\ArcGIS\DotNet\ESRI.ArcGIS.AxMapControl.dll'

解决方法:

1. In VS.NET 2005, go to your project's References folder in Solution Explorer. Select ESRI.ArcGIS.AxMapControl or ESRI.ArcGIS.MapControl. In the Properties Pane, change Aliases from global to global, MapControlAlias.

将AxMapControl,MapControl都加入到引用中,修改ESRI.ArcGis.AxMapControl引用的属性,修改其Aliases(别名)由"global" to "global, MapControlAlias";
2. In your code at the first line in the file add: extern alias MapControlAlias;
在其他命名空间之前添加extern alias MapControlAlias;
3. Add alias to your ambiguous call. Ex. this.axMapControl1.OnMouseMove += new MapControlAlias::ESRI.ArcGIS.MapControl.IMapControlEvents2_OnMouseMoveEventHandler(this.axMapControl1_OnMouseMove);
在冲突的地方,加上别名::想要调用的对象
This should work, don't worry about trying to do commandline /references as I couldn't figure it out, but the Properties Alias worked. 

修改后,如下:
引用代码:
extern alias MapControlAlias;

    using DevExpress.XtraEditors;
    using DevExpress.XtraEditors.Controls;
    using ESRI.ArcGIS.Carto;
    using ESRI.ArcGIS.DataSourcesFile;
    using ESRI.ArcGIS.DataSourcesRaster;
    using ESRI.ArcGIS.esriSystem;
    using ESRI.ArcGIS.Geodatabase;


类中代码:
this.axMapControl1.OnMouseMove += new MapControlAlias::ESRI.ArcGIS.MapControl.IMapControlEvents2_OnMouseMoveEventHandler(this.axMapControl1_OnMouseMove);
this.axMapControl1.OnAfterDraw += new MapControlAlias::ESRI.ArcGIS.MapControl.IMapControlEvents2_OnAfterDrawEventHandler(this.axMapControl1_OnAfterDraw); 

来源于: http://forums.esri.com/thread.asp?c=159&f=1707&t=171978&mc=6

你可能感兴趣的:(ArcEngine)