zoukankan      html  css  js  c++  java
  • 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();      //响应该命令                        
            }

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

  • 相关阅读:
    Everything
    图片在下载过程中由模糊逐渐变清晰的技巧
    Windows下Critical Section、Event、Mutex、Semaphores区别
    二维Cookie操作(JS和ASP)
    ASP.net利用urlMappings重写URL路径(URL映射)
    GHOST (以硬盘为单位和以分区分区为单位还原)>个人观点:)
    简单计算器
    ASP操作COOKIE
    擦亮自己的眼睛去看SQLServer之谈谈锁机制
    SQL SERVER2008跟踪标志
  • 原文地址:https://www.cnblogs.com/smilepeter/p/5485028.html
Copyright © 2011-2022 走看看