博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ArcEngine的ToolbarControl解析
阅读量:7048 次
发布时间:2019-06-28

本文共 2358 字,大约阅读时间需要 7 分钟。

      ToolbarControlClass有三个主要的接口: 

IToolbarControl, IToolbarControl2, IToolbarControlDefault  

     其中,IToolbarControl2是IToolbarControl的新版本.而IToolbarControlDefault is a 'pure' dispatch interface,始终是IToolbarControl的最新的版本,也就是如果有 了IToolbarControl3,那么IToolbarControlDefault就是IToolbarControl3.

     在IToolbarControlDefault中有三个Members可以向ToolbarControl添加项:

     AddItem():向ToolbarControl添加一个item,支持实现了 ICommand, IMenuDef, IToolbarMenu, ITool, IToolControl,  IPaletteDef and   IToolbarPalette的类.             

     AddMenuItem():向ToolbarControl添加一个menu item,是AddItem的一个简略(剪切)版,支持实现了 IMenuDef,IToolbarMenu的类

     AddToolbarDef():向 ToolbarControl添加定制的工具item.

下面以AddItem 为例:

第一个参数是object类型,基本可以是这:UID,ProgID,接口(ICommand,IToolBarDef ...),例如

//Adding a command by UID UID uID = new UIDClass(); uID.Value = "esriControls.ControlsMapFullExtentCommand"; axToolbarControl1.AddItem(uID,-1,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly); //Adding a command by ProgID string progID = "esriControls.ControlsMapFullExtentCommand"; axToolbarControl1.AddItem(progID,-1,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly); //Adding a command by ICommand ICommand command = new ControlsMapFullExtentCommandClass(); axToolbarControl1.AddItem(command,-1,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly);

 

      ToolbarControl内部有一个CommandPool,用来存放管理Command.当向ToolbarControl中添加一项的时候,AddItem检查CommandPool中是否已经存在该Command.如果没有,这个Command被created,并被加入CommandPool,这个Command的使用计数被置为1.如果这个Command已经存在,它将被重用,使用计数加1.

     注意ESRI.ArcGIS.Controls内置的Controls. 像ControlsMapZoomInFixedCommandClass这种以CommandClass结尾的一般是实现了ICommand接口. 这个Command会持久地与MapControl交互就需要ITool接口,像ControlsMapZoomInToolClass这种以ToolClass结尾的都是实现了ITool的类.ControlsFeatureSelectionToolbarClass这种实现了IToolBarDef接口的.  实现了不同接口的类在使用时也有所不同:

ICommand command = new ControlsOpenDocCommandClass(); command.OnCreate(m_mapControl.Object); command.OnClick(); ICommand pCommand = new ESRI.ArcGIS.Controls.ControlsMapZoomInToolClass(); pCommand.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = pCommand as ITool;

 

ArcEngine中你可以选择如何使用工具条:

 

1.使用ArcEngine的ToolbarControl,利用Add函数添加现有的Command Controls.

2.使用ArcEngine的ToolbarControl,利用Add函数添加自己实现的Command Controls.当然继承自ICommand或者ITool(或者BaseCommand或 BaseTool抽象类)

3.实现IToolBarDef 接口创建定制的工具条(Tool Bar)

4.在按钮,菜单项或者一般的toolbar中使用ControlsXXXXXXClass

<以上为纯属个人理解,如有错误,请留言,谢谢>

转载于:https://www.cnblogs.com/LoveLyre/archive/2011/08/31/2160640.html

你可能感兴趣的文章
【三石jQuery视频教程】03.创建垂直时间表(Timeline)
查看>>
HTML5系列:HTML5本地存储
查看>>
android完全退出应用程序
查看>>
Linux中cp和scp命令的使用方法
查看>>
Big Data Security Part One: Introducing PacketPig
查看>>
git入门-分支
查看>>
【转】win7与ubuntu双系统,删除ubuntu后,启动错误error:no such partition grub rescue的修复--不错...
查看>>
PHP-深入理解Opcode缓存
查看>>
语言代码
查看>>
android面试题 不仅仅是面试是一个很好的学习
查看>>
Linux 性能监测:工具
查看>>
Linux pipe功能
查看>>
为什么写科技博客是情侣如此重要?
查看>>
ORACLE触发特定的解释
查看>>
UVA - 11388 GCD LCM
查看>>
操作系统的文件系统思考
查看>>
【LeetCode】211. Add and Search Word - Data structure design
查看>>
Light OJ Dynamic Programming
查看>>
android开发隐藏了actionbar仍然短暂闪现的解决方法
查看>>
返回顶部的功能 div固定在页面位置不变
查看>>