程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> arcengine中自定義工具和自帶工具條(ICommand)點擊後和其他工具使用的沖突,arcengineicommand

arcengine中自定義工具和自帶工具條(ICommand)點擊後和其他工具使用的沖突,arcengineicommand

編輯:C#入門知識

arcengine中自定義工具和自帶工具條(ICommand)點擊後和其他工具使用的沖突,arcengineicommand


自己系統中本身對於放大縮小等功能直接是單獨重寫的,但是如果在加一個工具條具有相同功能的話兩者之間會有一些沖突,為解決該沖突可以重寫工具條的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();      //響應該命令                        
        }

這樣即可成功解決該沖突問題

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved