private void uiTool_Click(object sender, Janus.Windows.UI.CommandBars.CommandEventArgs e) { NBGIS.PluginEngine.ITool tool = this.m_ToolCol[e.Command.Key]; //Tool第一次按下 if (this.m_Application.CurrentTool == null && this.m_MapControl.CurrentTool == null && this.m_PageLayoutControl.CurrentTool == null) { this.StatusBar.Panels[0].Text = tool.Message; Janus.Windows.UI.CommandBars.UICommand cmd = (Janus.Windows.UI.CommandBars.UICommand)sender; cmd.Checked = Janus.Windows.UI.InheritableBoolean.True; this.axMapControl.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); this.axPageLayoutControl.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); tool.OnClick(); this.m_Application.CurrentTool = tool.ToString(); } else { if (this.m_Application.CurrentTool == e.Command.Key) { //如果是连续第二次按下,则这个Tool完成操作后处于关闭状态 Janus.Windows.UI.CommandBars.UICommand cmd = (Janus.Windows.UI.CommandBars.UICommand)sender; cmd.Checked = Janus.Windows.UI.InheritableBoolean.False; this.axMapControl.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerDefault; this.axPageLayoutControl.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerDefault; this.m_Application.CurrentTool = null; this.m_Application.MapControl.CurrentTool = null; this.m_Application.PageLayoutControl.CurrentTool = null; } else { //按下一个Tool后没有关闭接着按另一个Tool,则关闭前一个Tool Janus.Windows.UI.CommandBars.UICommand lastTool = this.uiCommandManager.Commands[this.m_Application.CurrentTool]; if (lastTool != null) { lastTool.Checked = Janus.Windows.UI.InheritableBoolean.False; } this.m_Application.MapControl.CurrentTool = null; this.m_Application.PageLayoutControl.CurrentTool = null; //设置后一个Tool的状态 this.StatusBar.Panels[0].Text = tool.Message; Janus.Windows.UI.CommandBars.UICommand cmd = (Janus.Windows.UI.CommandBars.UICommand)sender; cmd.Checked = Janus.Windows.UI.InheritableBoolean.True; this.axMapControl.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); this.axPageLayoutControl.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); tool.OnClick(); this.m_Application.CurrentTool = tool.ToString(); } } }
void UITool_Click(object sender, EventArgs e) { //获得当前点击的ITool对象 ToolStripButton pTempBtn = sender as ToolStripButton; ToolStripMenuItem pTempMenuItem = sender as ToolStripMenuItem; ToolStripItem pItem = pTempBtn; if (null == pTempBtn) { pItem = pTempMenuItem; } if (null == pItem) { return; } string strKey = pItem.AccessibleName; NBGIS.PluginEngine.ITool tool = this._ToolCol[strKey]; //第一次按下 if (_App.CurrentTool == null && _mapControl.CurrentTool == null && _pageLayoutControl.CurrentTool == null) { toolStripStatusLabel1.Text = tool.Message; if (null != pTempBtn) { pTempBtn.Checked = true; } axMapControl.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); axPageLayoutControl.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); tool.OnClick(); _App.CurrentTool = tool.ToString(); } else { if (_App.CurrentTool == strKey) { //如果是连续二次按下,则使这个Tool完成操作后处于关闭状态 if (null != pTempBtn) { pTempBtn.Checked = false; } axMapControl.MousePointer = esriControlsMousePointer.esriPointerDefault; axPageLayoutControl.MousePointer = esriControlsMousePointer.esriPointerDefault; _App.CurrentTool = null; _App.MapControl.CurrentTool = null; _App.PageLayoutControl.CurrentTool = null; } else { ////按下一个Tool后没有关闭接着去按另一个Tool,则关闭前一个Tool ////获得前一个Tool if (null != pTempBtn) { 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的状态 toolStripStatusLabel1.Text = tool.Message; if (null != pTempBtn) { pTempBtn.Checked = false; } axMapControl.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); axPageLayoutControl.MousePointer = (ESRI.ArcGIS.Controls.esriControlsMousePointer)(tool.Cursor); tool.OnClick(); _App.CurrentTool = tool.ToString(); } } }