77范文网 - 专业文章范例文档资料分享平台

ArcGIS Engine控件编程(6)

来源:网络收集 时间:2019-04-02 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

dr[j] = pFeature.get_Value(j).ToString(); } }

dt.Rows.Add(dr);

pFeature = pFeatureCursor.NextFeature(); }

GeoMapAttribute frmTable = new GeoMapAttribute(); frmTable.Show();

frmTable.dataGridView1.DataSource = dt; } }

上面的所有代码,还可以进行优化,先应该利用鼠标右键点击目标图层,并弹出列表菜单,其中应该包含打开属性表。当用户用鼠标选择弹出菜单中的打开属性表时,系统才显示所选图层的属性表。这样利用后面的ToolbarControl和有关菜单定制方面的知识。随后再讲。

2.4 ToolbarControl及相关对象

2.4.1 概述

ToolbarControl命名空间包含以下6个对象及相关接口:ToolbarControl、ToolbarItem、ToolbarMenu、CommandPool、CustomizeDialog、MissingCommand。这些对象之间的结构关系,如下图所示。

ToolbarControl ToolbarItem CustomizeDialog ToolbarMenu CommandPool MissingComman

图 ToolbarControl及相关对象之间的关系

ToolbarControl要与一个伙伴控件协同工作。伙伴控件可以是MapControl、

PageLayoutControl、ReaderControl、SceneControl或GlobeControl。伙伴控件可以利用ToolbarControl控件的属性页设置,也可以通过编程设置。该控件的伙伴控件都实现了IToolbarBuddy接口,这个接口用于设置伙伴控件的CurrenTool属性。ToolbarControl不仅提供了部分用户界面,而且还提供了部分应用程序框架。ArcGIS Desktop应用程序,如ArcMap、ArcGlobe和ArcScene等具有强大而灵活的框架,包括诸如工具条、命令、菜单、泊靠窗口和状态条等用户界面组件。这种框架是终端用户可以通过改变位置、添加和删除这些用户界面组件来定制应用程序。

2.4.2 ToolbarControl控件

ToolbarControl使用钩子(hook)来联系命令对象和MapControl或PageLayoutControl控件,并提供属性、方法和事件用于:

?管理控件外观 ?设置伙伴控件 ?添加、删除命令项 ?设置当前工具 ?定制工具

该控件的主要接口包括: ?IToolbarControl ?IToolbarControl2

?IToolbarControlEvents

(1)IToolbarControl

该接口是任何与ToolbarControl有关任务的出发点,如设置控件外观、设置伙伴控件、添加或取出命令、工具、菜单、定制ToolbarControl的内容等。

IToolbarControl接口提供的主要属性包括:Buddy、CommandPool、CurrentTool、Customize、CustomProperty、Enabled、Object、OptionStack、ToolTips、TextAlignment、UpdateInterval等。

IToolbarControl接口提供的主要方法包括:AddItem、AddMenuItem、AddToolbarDef、Find、GetItemRect、HitTest、MoveItem、Remove、RemoveAll、SetBuddyControl、Update等。

(2)IToolbarControl2

该接口在继承IToolbarControl接口的基础上,又添加了一些新的方法和属性。代表目前版本的最新接口。

(3)IToolbarControlEvents

该接口是一个事件接口,它定义了ToolbarControl能够处理的全部事件。如

OnDoubleClick、OnItemClick、OnKeyDown、OnKeyUp、OnMouseDown、OnMouseUp和OnMouseMove等。

(4)ToolbarControl上的命令

在ToolbarControl上可以以下驻留三类命令:

1)实现了相应单击事件的ICommand接口的单击命令(简单命令)。用户单击事件会导致对ICommand:OnClick方法的调用,并执行某种操作。通过改变ICommand:Checked属性的值,简单命令项的行为就像开关那样,单击命令是可以驻留在菜单中的唯一命令类型。

2)实现了ICommand接口和ITool接口、需要终端用户与伙伴控件的显示进行交互的工具。ToolbarControl维护着一个CurrentTool属性,当终端用户单击ToolbarControl上的工具时,该工具就成为CurrentTool,而前一个工具就处于非活动状态。ToolbarControl会设置伙伴控件的CurrentTool属性,当某个工具为CurrentTool时,该工具会从伙伴控件收到鼠标和键盘事件。

3)实现了ICommand接口和IToolControl接口的工具控件。这通常为用户界面组件,象ToolbarControl上的列表框和组合框。ToolbarControl驻留了来自IToolControl:hWnd属性窗口句柄提供的一个小窗口。只能向ToolbarControl添加特定工具控件的一个例程。

有三种方法可以将命令添加到ToolbarControl中。第一种方法是指定唯一识别命令的一个UID对象(使用GUID),使用示例如下:

UID uID = new UIDClass();

uID.Value = \; axToolbarControl1.AddItem(uID, -1, -1, false, 0,

esriCommandStyles.esriCommandStyleIconOnly);

第二种方法指定一个progID,使用示例如下:

string progID = \; axToolbarControl1.AddItem(progID, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);

第三种方法是提供某个现有命令对象的一个例程,使用示例如下:

ICommand command = new ControlsMapFullExtentCommandClass(); axToolbarControl1.AddItem(command, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);

上述三种方法将都是调用AddItem方法将命令加入ToolbarControl中,该方法参数的具体含义请查阅相应的帮助文档。

(5)更新命令

默认情况下,ToolbarControl每半秒自动更新其自身一次,以确保驻留在ToolbarControl上的每个工具条命令项的外观与其底层命令的Enabled、Bitmap和Caption属性同步。改变UpdateInterval属性可以更改更新的频率。在应用程序首次调用Update方法时,ToolbarControl会检查每个工具条命令项底层命令的ICommand:OnCreate方法来检查是否已经被调用过。若还没有调用过该方法,则ToolbarControl将作为钩子(hook)被自动传递给ICommand:OnCreate方法。

(6)定制

利用鼠标选择窗体上的ToolbarControl空间实例对象,在单击鼠标右键,将弹出该

axToolbarControl实例对象的属性对话框,选择属性对话框面板上的Items页面,利用其中的Add和Remove All命令按钮,就可以定制ToolbarControl控件上的命令、工具、菜单等。

2.4.3 ToolbarItem

ToolbarItem就是驻留在Toolbarcontrol或工具条菜单上的单个Command、Tool、

ToolControl或Menu Item菜单。ToolbarItem接口的属性决定工具条命令项的外观。例如,工具条命令项是否在其左侧有一条垂直线表示是否开始一个命令组(Group)、命令项的样式是否有一个位图、标题或两者都有。

ToolBarItem是一个不可创建的对象,引用不可创建的对象必须通过其它对象获得。ToolbarItem的主要接口是IToolbarItem,该接口下面包含的属性如下图所示。

图 IToolbarItem接口的属性

2.3.4 ToobarMenu组件类

ToolbarControl可以驻留下拉菜单。工具条菜单(ToolbarMenu)表示单击命令项的一个垂直列表。用户必须选择工具条菜单上的一个命令项,或单击工具条菜单之外的地方使其消失。工具条菜单只能驻留命令项(不允许驻留工具或工具控件),工具条菜单本身可以驻留在ToolbarControl上,作为子菜单驻留在另一个工具条菜单上,或者作为右键单击弹出式菜单。

每个Toolbarcontrol和工具条菜单都有一个命令池(CommandPool),用于管理其使用的命令对象集。命令池中的对象可以重复添加,软件开发人员可以通过编程探测命令池中的对象是否已经添加过,在实际GIS软件开发中,相同的命令对象在命令池中只添加一次。

ToolbarMenu的主要接口是IToolbarMenu,该接口包含的主要成员如下图所示。

图 ToolbarMenu接口的主要成员

2.5 ControlCommands

ControlCommands命名空间中提供了大量的命令、工具条及工具、工具控件和菜单。利用ArcGIS Engine进行GIS软件开发,可以直接使用这些对象,使用这些对象包括两种方式,一是通过Toolbarcontrol控件使用,另外一种是不通过Toolbarcontrol控件使用。开发人员在实际软件开发过程中,可以创建自己的自定义命令、工具和菜单来扩展ArcGIS Engine提供的命令集。HookHelper、GlobeHookHelper和SceneHookHelper对象可以简化这种开发。

2.5.1 通过ToolbarControl控件使用ControlCommands

通过Toolbarcontrol控件使用ControlCommands有三条途径:

(1)在程序设计阶段,利用ToolbarControl控件的属性页设置;

(2)在程序代码中,使用AddItem、AddMenuItem或AddToolbarDef方法将要用到的ControlCommands的实例对象添加到ToolbarControl控件中。命令可以使用AddItem或AddSubMenu方法添加到ToolbarMenu上。

(3)最终用户可以通过Customize对话框进行设置。

2.5.2 不通过ToolbarControl控件使用ControlCommands

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库ArcGIS Engine控件编程(6)在线全文阅读。

ArcGIS Engine控件编程(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/568075.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: