关于AxMapControl与MapControl,其实还是AxMapcControl

这2个家伙相信对于初学者来说都看到过,咱也郁闷这2哥们到底啥关系,我刚碰到的时候也没管它,只是网上百度了一下,http://blog.csdn.net/crury/article/details/5624525,这个连接讲的是一个整体的区别,已经说的很详细了,但是为这里觉得大家如果动态的绑定OnMouseDown等等事件的方法话还是要注意一下区别;先说一下我是AE9.3+VS2008环境(low哭)。

上面的链接我的总体理解就是AxMapControl是微软对ESRI的MapControl再次包装了一下(微软:不是咱开发的也要看起来像是咱开发的,实在不行就包装下!大笑);但是在9.3中,你2个都是可以使用的;你别看第2个对象都是ESRI.ArcGIS.Controls实例化出来的;但是他们的命名空间是ESRI.ArcGIS.AxControls;

        private ESRI.ArcGIS.Controls.MapControl MapControl1;
        private ESRI.ArcGIS.Controls.AxMapControl axMapControl1;
        private ESRI.ArcGIS.MapControl.AxMapControl axMapControl1;

首先你F12ESRI.ArcGIS.Controls.AxMapControl(第二个)看会发现Ax打头的类都是继承于AxHost这货,你再F12,这货就出现了!也是证明了它是被微软打包过的。如果你F12ESRI.ArcGIS.MapControl.AxMapControl这货(它的命名空间是ESRI.ArcGIS.AxMapControl)也就是第三个你会发现对应命名空间的类,而且也是继承了AxHost这个类,好吧,这货也是被微软收买的!

再来F12第一个,好吧,这个才是正正经经的ESRI的类~而且是一个组件类,也就是说不是给我们作为控件来使用的(我理解)而是用来实例化相应的对象的。

当我们想要动态的给你当前的mapcontrol注册一个mousedown(暂且拿它说事,不要告诉为你不认识它)事件的时候。。。使用的内置委托是ESRI.ArcGIS.MapControl.IMapControlEvent2_OnMouseDownEventHandler

使用的自定义注册方法事件是 ESRI.ArcGIS.MapControl.IMapControlEvents2_OnMouseDownEvent这个事件;

使用第三个变量是没有问题的;

其中 using ESRI.ArcGIS.MapControl.IMapControlEvents2_OnMouseDownEvent的引用需要ESRI.ArcGIS.AxMapControl命名空间,看来果然是包装了MapControl在里面 

下面我们把第一步new出来的map对象换成我们每次拖动控件时自动生成的AxMapControl,即ESRI.ArcGIS.Controls.AxMapControl。

这个相应的委托被微软封装了,需要对应加上了_Ax_的委托,就是这个委托:ESRI.ArcGIS.Controls.IMapControlEvents2_Ax_OnMouseDownEventHandler;

但是事件的名称并没有变,这里一旦我们使用了简写IMapControlEvents2_OnMouseDownEvent有可能就会报错,因为虽然事件名一样,但是命名空间已经和委托一样变了,但是最坑爹的是微软它这个事件的名称没有加上_Ax_,还是原来的ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent事件名。

不过微软应该是推荐使用ESRI.ArcGIS.Controls命名空间下的类的,也就是说我们需要添加的引用是ESRI.ArcGIS.AxControls!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值