命令和工具的宿主控件ToolBarControl控件
在ToolBarControl控件中,我们通过ToolBarControl控件的属性页面添加了一些如打开文档,平移,放大等功能,在ArcGIS Engine中我们将宿主在ToolBarControl控件中的内容分为三类“命令,工具,工具控件“
命令,就是当用户单击时所产生的操作,比如说,我们要打开一个地图文档,我们只需要在ToolBarControl控件上添加打开地图文档这个操作,然后用鼠标点击。
工具,存在着交互这个操作。当我们在ToolBarControl控件上使用一个工具的时候,我们需要通过两步操作:(1)单击这个工具,(2)使用这个工具更相应的控件做交互操作。
如果我们点击了平移这个操作,那么这个时候我们还要用鼠标和地图进行平移等交互,那和谁交互呢,我们知道ToolBarControl有一个buddy 属,这个就体现了在budy属性上。ToolbarControl会将伙伴控件的CurrentTool属性设置为我们用鼠标点击的工具,然后伙伴控件就等着和我们的工具交互。
工具控件,这通常是用户界面组件,如ToolBarControl控件上的列表框和组合框。
其实在ToolBarControl控件中还可以宿主工具条菜单(ToolbarMenu),工具条菜单表示单击命令项的一个垂直列表。用户必须选择工具条菜单上的一个命令项,或单击工具条菜单之外的地方使其消失。工具条菜单只能驻留命令项(不允许驻留工具或者工具控件)
命令和工具
在ArcGIS Engine中,命令是实现了ICommand接口,在ArcGIS Engin的开发帮助中,我们可以看到ICommand接口以下成员:
当用户单击这个命令时会导致ICommand.OnClick方法被调用,并执行某种操作。
要将一个命令宿主到ToolBarControl控件上,有以下三种方法:
1. 使用UID
2. 使用progID
3. 使用ICommand
UID pUID = new UIDClass();
pUID.Value = "esriControls.ControlsUndoCommand";
axToolbarControl1.AddItem(pUID, -1, 0, false, -1, esriCommandStyles.esriCommandStyleIconOnly);
axEditorToolbar.AddItem("esriControls.ControlsUndoCommand", 0, -1, true, 0, esriCommandStyles.esriCommandStyleIconOnly);
ICommand pUndo = new ControlsUndoCommandClass();
axEditorToolbar.AddItem(pUndo, 0, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);