toolControls添加工具项

最近参考Arcengine的Samples做的功能,虽然简单,但是示例代码的确体现出了很好的封装性,值得学习,效果图如下:

闲话休絮,直入正题:

一、首先建立工具类,实现IMenuDef接口

class Neval:IMenuDef//这个接口
    {

public string Caption
        {
            get
            {
                return "Navigation";
            }
        }

public void GetItemInfo(int pos, IItemDef itemDef)      //POS为序列号
        {
            switch (pos)
            {
                case 0:
                    itemDef.ID = "esriControls.ControlsMapZoomInFixedCommand";     //就是ESRI.ArcGIS.Controls下的类的名称
                    break;
                case 1:
                    itemDef.ID = "esriControls.ControlsMapZoomOutFixedCommand";
                    break;
                case 2:
                    itemDef.ID = "esriControls.ControlsMapFullExtentCommand";
                    itemDef.Group = true;
                    break;
                case 3:
                    itemDef.ID = "esriControls.ControlsMapZoomToLastExtentBackCommand";
                    break;
                case 4:
                    itemDef.ID = "esriControls.ControlsMapZoomToLastExtentForwardCommand";
                    break;
            }
        }

public int ItemCount
        {
            get {
                return 5;
            }
        }

public string Name
        {
            get { return "Navigation"; }
        }
    }

二、在form—load中添加

axToolbarControl1.AddItem(new Neval(), -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconAndText);

三、再创建类SubMenu同样实现IMenuDef接口

class SubMenu:IMenuDef
    {

public string Caption
        {
            get { return "SumMenu"; }
        }

public void GetItemInfo(int pos, IItemDef itemDef)
        {
            switch (pos)
            {
                case 0:
                    itemDef.ID = "esriContorls.ControlsSelectTool";
                    break;
                case 1:
                    itemDef.ID = "esriControls.ControlsSendBackwardCommand";
                    break;
                case 2:
                    itemDef.ID = "esriControls.ControlsSnappingEnabledCommand";
                    break;
            }
        }

public int ItemCount
        {
            get {return 3; }
        }

public string Name
        {
            get { return "SumMenu"; }
        }
    }

四、在Form_load()添加如下代码:

IToolbarItem items = axToolbarControl1.GetItem(4); //4为所在工具的索引
            IToolbarMenu menu = items.Menu;
            menu.AddSubMenu(new SubMenu(), 2, true);//2为插入SubMenu的索引位置

时间: 2024-12-28 20:52:52

toolControls添加工具项的相关文章

Source insight添加工具自动排版

当在网上找了一些别人的程序拿来学习,用Source insight来看时,会不会因为代码太乱看了义愤填膺呢? 有很多集成的开发环境可以自动排版,但source insight却不行!不过,有工具和配置,可以帮助完成这个事情: 1,下载astyle工具:http://download.csdn.net/detail/taixinlfx/43067302,打开你的SourceInsight, 选择菜单"Options-->Custom Commands-->Add", 输入Ar

添加监控项(Item)

添加监控项:Configuration -- Hosts -- Items -- Create item Name :监控项的名字 Type :监控的方式,就是我们前面说的通过 zabbix-agent 方式.SNMP 方式.ssh 方式等对其进行监控 Key :表示具体的监控项,比如监控网卡,要具体到监控哪个网卡,以及这个网卡的什么数据(比如流入的流量.流出的流量.网卡速率等等,而流量的流入又包括流入的字节数,流入的报文数,流入的总数等等),因此这个 Key 要定义得很具体,Key 表示具体的

Dynamics CRM2013 1:N关系 sub-grid中的“添加现有项”和“添加新建项”功能详解

CRM2013中sub-grid的样式和2011中有了较大的变化,2013和2011界面对比如下 在2011的时候按钮是在ribbon区,1:N的父子关系实体直接点击添加新纪录就可以,但2013就不行了点加号首先会有个下拉框把现有的子实体数据列出来,你可以选择现有的也可以新建 既然你的关系实体是1:N的父子实体,那子的存在肯定是依赖于与父实体的,所以这个地方就压根不存在关联现有实体一旦关联就会报错,所以纯碎新建的话这边的步骤就繁琐了,同时也会给用户带来迷惑 所以这个地方这种情况下完全没必要添加现

[转]使用Maven添加依赖项时(Add Dependency)时,没有提示项目可用,并且在Console中,输出: Unable to update index for central|http://repo1.maven.org/maven2 。

使用Maven添加依赖项时(Add Dependency)时,没有提示项目可用,并且在Console中,输出: Unable to update index for central|http://repo1.maven.org/maven2 . 解决方式如下: 1.通过其它方式下载如下两个文件: http://repo1.maven.org/maven2/.index/nexus-maven-repository-index.properties http://repo1.maven.org/m

好神奇的代码,可以让匿名用户对特定SharePoint 列表拥用添加列表项的权限哦

如果你不使用代码,很难从界面上去设置列表的匿名用户(如果可以请告诉我,我会自动删除这个博文)拥有列表项的添加权限. 其实这种需求是非常必要的,比如: 1.允许新用户去提交一个注册申请, 2.在召集临时会议的时候很多临时人员没有域帐号,而要上传资料, 3.允许网页可以被 匿名评论和提交匿名的答卷等等. 步骤: 首先: 1.在这个列表里,把匿名用户启用: 照着如图的方式做就行了: 但是,你会发现,删除.添加.编辑等权限对匿名用户来说,根本选不上,:(,如下图,没有关系,选上查看,就行了: 2.  然

添加现有项到当前项目的几点注意事项

针对“增删改查”项目添加“电影记录管理系统”中文件操作注意事项梗概: 1.打开当前“增删改查”项目: 2.右键添加现有项,找到相应文件(若找不到目标文件,选择“所有文件”): 3.添加完毕后,把涉及到“电影记录管理系统”的文件中的namespace全部改成增删改查: 4.手动添加两个系统没有默认添加的using指令(添加引用): using System.Configuration;//配置命名空间,包含应用程序配置相关的类比如ConfigurationManager[手动添加]using Sy

CentOS 7系统添加启动项

CentOS 7系统已经把CentOS 6的 runlevel 系统服务管理替换成了systemd.在 /etc/rc[0-6S].d 下添加启动项已经不能在系统启动的时候自动执行,需要通过新的 systemd.unit 配置添加启动项. systemd 特点 1. 可以指定unit间的依赖关系 2. 可以控制unit间的执行顺序或允许它们并发执行 简单的例子 该例子的功能是通过systemd配置一个启动项 1. 在 /usr/lib/systemd/system 目录下创建一个文件 myser

Android Studio如何给log添加过滤项(Filters)?

今天讲的这个东西比较简单,估计绝大部分人都是会用. 以前使用Eclipse时,在log的左侧有一个区域是用于管理各个Filters的,这样过滤log很方便.用Android Studio的时候,估计你也会找啊找的.估计一开始可能没注意就没找到,那如何添加过滤项呢,如图: 1,选择设备 2,选择进程 3,log类型切换 4,log过滤选项 今天要说的添加过滤项,就是在4中点击Edit Filter Configuration. 点击Edit Filter Configuration弹出下面的对话框

在Leangoo卡片里,怎么添加成员,设置标签,添加检查项?

Leangoo的卡片可以是需求.目标.任务.问题.缺陷等,没有限制.我们可以根据需要使用卡片来表达我们需要管理的内容,然后使用看板进行组织. 添加成员: 点击卡片,选择添加成员按钮即可. 设置标签: 标签通常用于对卡片进行分类. 添加检查项: 点击卡片面板上的检查项按钮添加检查项.检查项通常用来作为任务或者需求的验收标准,也可以作为任务的子任务,或者测试案例的测试步骤或测试要点等. 浏览器访问官方链接:leangoo.com