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

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

  • 相关阅读:
    Using Subversion and ViewCVS on Solaris 10
    Solaris开放源代码了!
    小笨霖英语笔记本(0)
    How to start CDE/JDS with xinit command
    英译汉练习:Solaris 10进入Linux领地
    UNIX/LINUX 平台可执行文件格式分析
    小笨霖英语笔记本(2)
    小笨霖英语笔记本(3)
    小笨霖英语笔记本(1)
    魔鬼城雅丹地貌
  • 原文地址:https://www.cnblogs.com/smilepeter/p/5485028.html
Copyright © 2020-2023  润新知