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();      //响应该命令                        
            }

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

  • 相关阅读:
    面向过程
    生成器
    迭代器
    装饰器
    函数及嵌套
    字符编码与文件操作
    linux_ssh
    LNMP
    BZOJ 3238: [Ahoi2013]差异
    BZOJ 3998: [TJOI2015]弦论
  • 原文地址:https://www.cnblogs.com/smilepeter/p/5485028.html
Copyright © 2011-2022 走看看