向ArcGIS的ToolBarControl中添加任意的windows组建的方法[转]

向ArcGIS的ToolBarControl中添加任意的windows组建的方法[转]

Link:
http://www.cnblogs.com/mymhj/archive/2012/10/12/2721036.html

概要:在使用ArcEngine开发中,给ToolbarControl添加按钮形式的命令项相信大家都很熟悉了,因为网上的例子很多。但这种使用click调用功能的方式只能满足大部分用户在体验方面的需求,除此之外用户很可能要求你在工具条中增加类似文本框,单选框、选择面板,combobox等windows控件,今天有个同事问我这个问题就在这里做一个实例。供大家参考。

具体实现:

? 1 知识整备

?(1 )其实要实现这个效果很简单,只要大家了解Arcgis中的IToolControl接口的使用方法,就不难实现。

?? IToolControl 这个接口有只有简单的三个方法:

?
?

hwnd:是个只读属性,用于给调用者返回控件
句柄。

OnDrop:是一个方法,用于调用者验证当前控件是否可拖动。

OnFocus:是一个方法,用于调用通知当前项,你已经聚焦。

(2)除了了解IToolCotrol接口之外,大家还必须具备知道如何创建Arcgis 命令插件的知识,以及如何调用插件的方法。

?
?

2 实现

?? 以一个简单Combobox为例:

??? public sealed class Command1 : BaseCommand, IToolControl
??? {
?

??????? private int _handle = 0;
??????? private ICompletionNotify _CompNotify;
??????? private System.Windows.Forms.ComboBox comboBox = new System.Windows.Forms.ComboBox();
??????? private IHookHelper m_hookHelper = null;
??????? public Command1()
??????? {
??????????? this._handle = comboBox.Handle.ToInt32();
??????????? comboBox.Items.Add("大家好才是真的好1");
??????????? comboBox.Items.Add("大家好才是真的好1");
??????????? comboBox.Items.Add("大家好才是真的好1");
??????? }

??????? #region Overriden Class Methods

??????? /// <summary>
??????? /// Occurs when this command is created
??????? /// </summary>
??????? /// <param name="hook">Instance of the application</param>
??????? public override void OnCreate(object hook)
??????? {
??????????? if (hook == null)
??????????????? return;

??????????? try
??????????? {
??????????????? m_hookHelper = new HookHelperClass();
??????????????? m_hookHelper.Hook = hook;
??????????????? if (m_hookHelper.ActiveView == null)
??????????????????? m_hookHelper = null;
??????????? }
??????????? catch
??????????? {
??????????????? m_hookHelper = null;
??????????? }

??????????? if (m_hookHelper == null)
??????????????? base.m_enabled = false;
??????????? else
??????????????? base.m_enabled = true;

??????????? // TODO:? Add other initialization code
??????? }

??????? /// <summary>
??????? /// Occurs when this command is clicked
??????? /// </summary>
??????? public override void OnClick()
??????? {
??????????? // TODO: Add Command1.OnClick implementation
??????? }

??????? #endregion

??????? #region IToolControl 成员

??????? public bool OnDrop(esriCmdBarType barType)
??????? {
??????????? if (barType == esriCmdBarType.esriCmdBarTypeToolbar)
??????????? {
??????????????? return true;
??????????? }
??????????? else return false;
??????? }

??????? public void OnFocus(ICompletionNotify complete)
??????? {
??????????? _CompNotify = complete;
??????? }

??????? public int hWnd
??????? {
??????????? get
??????????? {
??????????????? return _handle;
??????????? }
??????? }

??????? #endregion
??? }

3 实现效果

?

照着这个实例可以添加,其它的windows控件

?
?

4?实例代码

向ArcGIS的ToolBarControl中添加任意的windows组建的方法[转],布布扣,bubuko.com

时间: 2024-07-30 10:16:14

向ArcGIS的ToolBarControl中添加任意的windows组建的方法[转]的相关文章

指尖上的电商---(12)SolrAdmin中添加多核的另一种方法

这一节中我们演示下solr中创建多核的另一种方法. 接第10讲,首先关闭tomcat服务器 1.解压solr-4.8.0后,找到solr-4.8.0下面的example文件夹下的multicore文件夹 2. 把multicore文件夹下的所有文件拷贝到D:\Server\Solr文件夹下面 3.启动tomcat服务器,打开地址http://localhost:8040/solr/#/,就可以看到core0和core1两个索引了. 同理我们也可以添加多个 如下图: 指尖上的电商---(12)So

ArcGIS pro2.3中添加天地图底图

应用背景: 很多时候,我们需要使用网络上的遥感影像或者百度地图.天地图等在线地图做一些矢量化工作或者其他. 笔者见过很多人都是把百度地图截图,然后把图片导如Arcmap或者Arcgis pro中,然后进行矢量化操作(规划专业某女同学经常这样做……) 鉴于此,根据大佬提示,本人亲测在最新版本的arcgis pro2.3中加入天地图服务. 下面是具体步骤: 操作步骤: 注册天地图服务.http://www.tianditu.gov.cn/ 在控制台随便创建应用. 第3步中:需要用到1步中的申请的tk

在MVC中添加区域的真正正确的方法!

本文是自己1天时间的找原因的结果.上午遇到坑,在网上搜索了无数资料,呵呵,不管是高手.还是菜鸟的文章,都是没有把问题说清楚,在关键地方留了一个大坑,也需我的问题太初级了吧,别人都略过了,呵呵.言归正传(高手请飘过): 在MVC中添加区域Admin,调试时报错: 而我的所有的路由信息都是按网上千篇一律的教材来到配置的,简而言之就是配置AdminAreaRegistration.cs文件和RouteConfig.cs,不清楚的百度. 花费了我将近一天时间查资料,到群里请教,呵呵,没有答案.后来还是我

Ubuntu中添加应用程序快速启动器的方法

一些应用程序(例如很多.sh程序)如果想在Ubuntu中添加到Dash home中进行快速的启动,则需要找到/usr/share/applications这个目录,其中存放的全部是dash中的启动器,将你需要的程序xxx添加其中即可.具体操作步骤为: 命令行操作内容: cd /usr/share/applications sudo gedit xxx.desktop 打开需要编辑的文本内容为: [Desktop Entry] Version=1.0 Name=xxx Exec=/home/use

PHP中添加HTML代码的三种方法

php中添加HTML代码,就是php类型的文件中添加html代码~ 第一种是在HTML中加PHP. 大段大段的html代码中,在各个需要执行php的地方<?php .... ?> 比如 line7-9: 1 <head> 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 3 <meta http-equiv="Conten

DP软件中添加一台Windows客户端

1.远程添加客户端 2. 本地安装 本地安装完成后再导入 DP cell manager安装在Linux服务器上,打算用DP备份Windows Server 2012上文件.就需要把Windows Server添加到DP中,用远程安装最方便.只需把Windows的hosts文件中添加cell manager的Linux主机信息,Linux的hosts里添加Windows Server的主机信息就OK了.但是一直出错(错误信息忘记了),根据提示感觉是Linux无法通Windows 通信.Windo

ArcGIS 10.1 中的style和serverstyle及制作方法

图层的符号都是随机的,动态变化的,所以不利于图层的美观.还有一点就是符号有增加电子地图可读性的功能. Desktop的符号文件 把要用的符号用desktop的style manage制作相应符号,并把他存成style文件.该文件实际为mdb数据库.Style文件对应于desktop,在desktop开发包中有相应的类(StyleGallery类 )支持该文件的读取. Arcgis Engine符号文件 Arcgis engine的符号文件的扩展名为serverstyle,在目前argis 版本中

在VS中添加lib的第三种方法

先说说普通的两种方法: 方法1:  通过设置工程配置来添加lib库. 转自网上: A.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录.C  然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名. 这种方法比较繁琐,且不直观,而且还可能要争

在VS中添加lib库的三种方法

注意:每种方法也要复制相应的DLL文件到相应目录 方法1:  通过设置工程配置来添加lib库. A.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录.C  然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名. 这种方法比较繁琐,且不直观,