- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ArcGIS Engine开发-TOCControl中实现图层的拖放
[收藏此页] [打印]
【IT168知识库】?TOCControl非常好,不用写一行代码就可以将整个地图的图层信息况显示出来; TOCControl也非常坏,提供的接口非常少,我认为有用的只有三个:HitTest,SetBuddyControl,Update,而且Update方法一执行,整个TocControl就会重新装载一次,闪烁很厉害,实在是让人烦。要想在TOCControl中拖动图层,也并不容易,得动一动脑筋才行。 下面是我写的一个类,用于实现拖动图层,有需要的朋友,可以复制过去了,看一看。 需要说明的是,该类需要传入一个System.Windows.Forms.Control作为移动图层时显示要移到的位置,所以,在TOCControl上最好上一个Panel,然后传入到TocHelper中。另外,在计算同m_MovingLine显示的位置时,偶没找到什么好办法,只好设置了一个行高的参数。在正常字体时,据我的经验,行高是16,在Windows大字体显示时,行高是18,可以精确的显示。但这毕竟不是一个好办法。哪位高人要是看到了这个帖子,也请指点小弟一二,感激不尽!
public燾lass燭ocHelpertr牋牋bl{牋牋牋牋private燛SRI.ArcGIS.TOCControl.AxTOCControl爉_toc;来; T牋牋牋牋private營Layer爉_layer?爊ull;ol.AxTOC牋牋牋牋private爋bject爉_other,m_index;AxTOCC牋牋牋牋private燣ayerPopmenu爉_LyMenu?AxTOCC牋牋牋牋private燚ataFramePopmenu爉_FrameMenu?爊ew燚ataFramePopmenu();ontrol也非常牋牋牋牋public爀vent燙urrentLayerChangedHandler燙urrentLayerChanged;ontrol也牋牋牋牋private燽ool爉_Dragging?爁alse;dHandler牋牋牋牋private燬ystem.Windows.Forms.Control爉_MovingLine;//?爊ew燬ystem.Windows.Forms.Panel();只有三个:HitT牋牋牋牋public燭ocHelper(ESRI.ArcGIS.TOCControl.AxTOCControl爐oc)stem.W牋牋牋牋publ{牋牋牋牋牋牋m_toc?爐oc;er(ESRI.牋牋牋牋牋牋m_LyMenu?爊ew燣ayerPopmenu(this);trol.AxTO牋牋牋牋牋牋m_LyMenu.TOCControl?爉_toc;is);tro牋牋牋牋牋牋m_FrameMenu.TOCControl?爉_toc;;trol.A牋牋牋牋牋牋m_toc.LabelEdit?爀sriTOCControlEdit.esriTOCControlManual;m.Window????????????/**////处理事件????????????m_toc.OnMouseDown?+=?new?ITOCControlEvents_OnMouseDownEventHandler(m_toc_OnMouseDown);牋牋牋牋牋牋m_toc.OnMouseMove?=爊ew營TOCControlEvents_OnMouseMoveEventHandler(m_toc_OnMouseMove);seDown);牋牋牋牋牋牋m_toc.OnMouseUp?=爊ew營TOCControlEvents_OnMouseUpEventHandler(m_toc_OnMouseUp);ove);seD牋牋牋牋牋牋m_toc.OnBeginLabelEdit?=爊ew營TOCControlEvents_OnBeginLabelEditEventHandler(m_toc_OnBeginLabelEdit);uddyContr牋牋牋牋牋牋m_toc.OnEndLabelEdit?=爊ew營TOCControlEvents_OnEndLabelEditEventHandler(m_toc_OnEndLabelEdit);dit);udd牋牋牋牋}m_to牋牋牋牋public爒oid燬etMoveLine(System.Windows.Forms.Control爈ine)ditEven牋牋牋牋publ{牋牋牋牋牋牋m_MovingLine?爈ine;(System.牋牋牋牋牋牋m_Moving
文档评论(0)