void UITool_Click(object sender, EventArgs e) { try { ButtonItem pTemp = sender as ButtonItem; string strKey = pTemp.AccessibleName; MyPluginEngine.ITool tool = this._ToolCol[strKey]; //第一次按下 if (_App.CurrentTool == null && _mapControl.CurrentTool == null && _pageLayoutControl.CurrentTool == null) { statusButton1.Text = "当前操作:" + tool.Message; if (null != pTemp) { pTemp.Checked = true; } axMapControl1.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); axPageLayoutControl1.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); tool.OnClick(); _App.CurrentTool = tool.ToString(); //if (null != pTemp) //{ // pTemp.Checked = false; //} } else { if (_App.CurrentTool == strKey) { //如果是连续二次按下,则使这个Tool完成操作后处于关闭状态 if (null != pTemp) { pTemp.Checked = false; } axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault; axPageLayoutControl1.MousePointer = esriControlsMousePointer.esriPointerDefault; _App.CurrentTool = null; _App.MapControl.CurrentTool = null; _App.PageLayoutControl.CurrentTool = null; } else { ////按下一个Tool后没有关闭接着去按另一个Tool,则关闭前一个Tool ////获得前一个Tool if (pTemp != null) { MyPluginEngine.ITool lastTool = _ToolCol[_App.CurrentTool]; //先判断上一个Tool是不是工具栏中的 ButtonItem lastItem = GetButtonItemFromTools(lastTool.Caption); if (lastItem != null) { lastItem.Checked = false; } else//若不是工具栏中的,则判断是不是菜单栏中得到Tool { lastItem = GetButtonItemFromMenus(lastTool.Caption); if (lastItem != null) { lastItem.Checked = false; } } _App.PageLayoutControl.CurrentTool = null; _App.MapControl.CurrentTool = null; } //设置后一个Tool的状态 statusButton1.Text = "当前操作:" + tool.Message; if (null != pTemp) { pTemp.Checked = true; } axMapControl1.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); axPageLayoutControl1.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); tool.OnClick(); _App.CurrentTool = tool.ToString(); } } } catch (System.Exception ex) { MessageBox.Show("发生异常,原因:" + ex.Message); return; } }
void UITool_Click(object sender, EventArgs e) { //获得当前点击的ITool对象 //ToolStripButton pTempBtn = sender as ToolStripButton; //ToolStripMenuItem pTempMenuItem = sender as ToolStripMenuItem; //ToolStripItem pItem = pTempBtn; ButtonItem pTemp = sender as ButtonItem; //if (null == pTempBtn) //{ // pItem = pTempMenuItem; //} //if (null == pItem) //{ // return; //} string strKey = pTemp.AccessibleName; MyPluginEngine.ITool tool = this._ToolCol[strKey]; //第一次按下 if (_App.CurrentTool == null && _mapControl.CurrentTool == null && _pageLayoutControl.CurrentTool == null) { statusButton1.Text = "当前操作:" + tool.Message; if (null != pTemp) { pTemp.Checked = true; } axMapControl1.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); axPageLayoutControl1.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); tool.OnClick(); _App.CurrentTool = tool.ToString(); if (null != pTemp) { pTemp.Checked = false; } } else { if (_App.CurrentTool == strKey) { //如果是连续二次按下,则使这个Tool完成操作后处于关闭状态 if (null != pTemp) { pTemp.Checked = false; } axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault; axPageLayoutControl1.MousePointer = esriControlsMousePointer.esriPointerDefault; _App.CurrentTool = null; _App.MapControl.CurrentTool = null; _App.PageLayoutControl.CurrentTool = null; } else { ////按下一个Tool后没有关闭接着去按另一个Tool,则关闭前一个Tool ////获得前一个Tool if (null != pTemp) { //ToolStripItem pItem1 = GetCurBtn(pItem.GetCurrentParent(), _App.CurrentTool); //if (null == pItem1) // return; //ToolStripButton lastTool = pItem1 as ToolStripButton; //if (lastTool != null) //{ // lastTool.Checked = false; //} _App.PageLayoutControl.CurrentTool = null; _App.MapControl.CurrentTool = null; } //设置后一个Tool的状态 statusButton1.Text = "当前操作:" + tool.Message; if (null != pTemp) { pTemp.Checked = false; } axMapControl1.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); axPageLayoutControl1.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); tool.OnClick(); _App.CurrentTool = tool.ToString(); } } }