arcengine中自定义工具和自带工具条(ICommand)点击后和其他工具使用的冲突

自己系统中本身对于放大缩小等功能直接是单独重写的,但是如果在加一个工具条具有相同功能的话两者之间会有一些冲突,为解决该冲突可以重写工具条的OnItemClick事件

该工具条命名为axTool

我本身是在地图的鼠标点击事件中写的

代码如下:

 private void axMap_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e) //操纵ae图面
        {
            IEnvelope pEnv;
            axMap.MousePointer = esriControlsMousePointer.esriPointerCrosshair;
            IGeometry geometry = null;
            ESRI.ArcGIS.Geometry.Point point = new ESRI.ArcGIS.Geometry.PointClass();
            IGraphicsContainer pGC = axMap.ActiveView as IGraphicsContainer;

            axMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);//刷新所有图层
            switch (flag)
            {
                case 1:  //地图放大
                    pEnv = axMap.TrackRectangle();
                    pEnv.Expand(0.5, 0.5, true);
                    axMap.Extent = pEnv;
                    break;
                case 2:      //视图缩小
                    pEnv = axMap.Extent;
                    pEnv.Expand(2, 2, true);
                    axMap.Extent = pEnv;
                    break;
                case 3:   //视图平移
                    axMap.Pan();
                    break;

}

为解决冲突为axTool添加事件:

 private void axTool_OnItemClick(object sender, IToolbarControlEvents_OnItemClickEvent e)   //解决工具条点击后和其他工具使用的冲突
        {
            //先重置地图当前工具
            flag = -1;   //设置当前地图点击无效
            axMap.CurrentTool = null;   //设置当前地图工具为空
            int toolnum = e.index;      //获取工具条上点击工具的索引
            ICommand _command = axTool.CommandPool.get_Command(toolnum);  //根据该下标志获取点击命令
            axMap.CurrentTool = _command as ITool;    //设置当前地图的命令为该命令
            _command.OnClick();      //响应该命令
        }

这样即可成功解决该冲突问题

时间: 2024-10-25 17:20:38

arcengine中自定义工具和自带工具条(ICommand)点击后和其他工具使用的冲突的相关文章

仿微信中加载网页时带线行进度条的WebView的实现

finddreams:http://blog.csdn.net/finddreams/article/details/44172639 为了仿微信中加载网页时带进度条的WebView的实现,首先我们来看一下微信中的效果是什么样的: 明确需求之后,我们来开始动手做,首先我们来自定义一个带进度条的WebView,名字为ProgressWebView: /** * @Description:带进度条的WebView * @author http://blog.csdn.net/finddreams *

在ArcEngine中使用Geoprocessing工具-执行工具

转自原文在ArcEngine中使用Geoprocessing工具-执行工具 来解析一下Geoprocessor类的Execute方法,他有两种重载,Execute(IGPProcess, ITrackCancel)和Execute(string, IVariantArray, ITrackCancel). Execute(IGPProcess, ITrackCancel) IGProcess是所有Geoprocessor工具类都实现了的接口,通过ITrackCancel接口能够处理用户发出的取消

VS2008 Qt Designer 中自定义信号槽

一.Qt Designer自定义槽函数 发现:在VS2008 +Qt4.7  中打开ui文件,所用的英文QT Designer工具,没有转到槽函数的功能,不如QtCreator自带的QtDesigner功能齐全,只能Editor已有的信号槽. 发现:在QtCreator中右击某个控件 有"转到槽"功能,就会在.h和.cpp文件中生成我们的自定义槽函数void on_openButton_clicked() 解决方法:在VS2008中,选择某个项目,选择菜单Qt/Creat basic

Android中自定义视图View之---前奏篇

前言 好长时间没写blog了,心里感觉有点空荡荡的,今天有时间就来写一个关于自定义视图的的blog吧.关于这篇blog,网上已经有很多案例了,其实没什么难度的.但是我们在开发的过程中有时候会用到一些自定义的View以达到我们所需要的效果.其实网上的很多案例我们看完之后,发现这部分没什么难度的,我总结了两点: 1.准备纸和笔,计算坐标 2.在onDraw方法中开始画图,invalidate方法刷新,onTouchEvent方法监听触摸事件 对于绘图相关的知识,之前在弄JavaSE相关的知识的时候,

Android中自定义视图View之---开发案例

自定义视图View的案例 下面我们就是开始正式的进入自定义视图View了 在讲解正式内容之前,我们先来看一下基本知识 1.我们在自定义视图View的时候正确的步骤和方法 1).必须定义有Context/Attrbuite参数的构造方法,并且调用父类的方法 public LabelView(Context context, AttributeSet attrs) 不然会报错: 2).重写onMeasure方法 @Override protected void onMeasure(int width

【推荐】Win7任务栏增强工具 7+ Taskbar Tweaker 强大的任务栏标签管理工具

我曾经推荐过一款XP的任务栏管理工具 Taskix,这是一款在XP系统中拖动任务栏内标签的小工具. XP 32位可以下载我汉化的版本 http://www.cnblogs.com/clso/archive/2011/06/13/2079637.html XP 64位可以去官方下载64位版 http://taskix.robustit.com/ 但是自从我用了Windows 7系统之后,就一直没找到类似这种工具. 事实上Win7系统也提供了一个任务栏标签的分组系统,可以让相同程序的窗体界面排列在一

几何画板中直角符号为什么不带阴影

在学习几何里面的‘垂直关系判定’一节的时候,经常会需要用直角符号标识下垂直关系,方便大家辨识.那么几何画板作为几何学必不可少的教学辅助工具,常常被用来做数学课件,几何画板中也可以很快地给符合垂直关系的对象标出直角符号,但是系统设定的直角符号是带阴影填充的,我们该怎样把其中的阴影删除呢?下面就让小编来给大家支招几何画板中直角符号为什么不带阴影. 如下图所示,假如我们在几何画板中画一条线段,找出线段的中点,过中点构造线段的垂线.选择左侧工具箱下的“标记工具”,鼠标放在中点上,沿45度方位拖动鼠标,就

VS中自定义代码段

如果数据属性的数量比较多,那么输入总是要花费较多的时间,这里有个小技巧,就是使用快捷的输入方法,但是VS自身提供的代码段是有限的,幸运的是我们可以通过:工具> 代码段管理器>添加来添加自定义的代码段. 具体的方法是在安装路径下找到系统内置的代码段来修改,自定义自己需要的代码段. 1 <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 2 <Cod

如何在Windows Server 2008 R2没有磁盘清理工具的情况下使用系统提供的磁盘清理工具

今天,刚好碰到服务器C盘空间满的情况,首先处理了临时文件和有关的日志文件后空间还是不够用,我知道清理C盘的方法有很多,但今天只分享一下如何在Windows Server 2008 R2没有磁盘清理工具的情况下使用系统提供的磁盘清理工具. 一.在Windows Server 2008 R2,右击C盘,选择属性,弹出下面的界面: 即没有下面清理C盘的工具: 那如何使用系统自带的清理工具呢. 二.驱动器的常规属性和 cleanmgr.exe 磁盘清理选项不是默认情况下出现在 Windows Serve