/// <summary> /// 重载键盘监听 /// </summary> /// <param name="e"></param> protected override void OnKeyDown(KeyEventArgs e) { HandleQuickSnap(e); if (m_nodeMoveHelper.IsEmpty == false) { m_nodeMoveHelper.OnKeyDown(m_canvaswrapper, e); if (e.Handled) { return; } } base.OnKeyDown(e); if (e.Handled) { UpdateCursor(); return; } if (m_editTool != null) { m_editTool.OnKeyDown(m_canvaswrapper, e); if (e.Handled) { return; } } if (m_newObject != null) { m_newObject.OnKeyDown(m_canvaswrapper, e); if (e.Handled) { return; } } foreach (IDrawObject obj in m_model.SelectedObjects) { obj.OnKeyDown(m_canvaswrapper, e); if (e.Handled) { return; } } if ((Control.ModifierKeys & Keys.Control) == Keys.Control) { if (e.KeyCode == Keys.G) //ctrl+g网格是否显示 { m_model.GridLayer.Enabled = !m_model.GridLayer.Enabled; DoInvalidate(true); } if (e.KeyCode == Keys.S) { RunningSnapsEnabled = !RunningSnapsEnabled; MessageBox.Show("1"); if (!RunningSnapsEnabled) { m_snappoint = null; } DoInvalidate(false); } return; } if (e.KeyCode == Keys.Escape) //取消选择 { CommandEscape(); } if (e.KeyCode == Keys.P) //移动画布工具 { CommandPan(); } if (e.KeyCode == Keys.S) //画单条线工具 { RunningSnapsEnabled = !RunningSnapsEnabled; if (!RunningSnapsEnabled) { m_snappoint = null; } DoInvalidate(false); } if (e.KeyCode >= Keys.D1 && e.KeyCode <= Keys.D9) //数字键盘选择线条粗细颜色 { int layerindex = (int)e.KeyCode - (int)Keys.D1; if (layerindex >= 0 && layerindex < m_model.Layers.Length) { m_model.ActiveLayer = m_model.Layers[layerindex]; DoInvalidate(true); } } if (e.KeyCode == Keys.Delete) //删除选中 { CommandDeleteSelected(); } if (e.KeyCode == Keys.O) //建立两线延长线直到相交点 { CommandEdit("linesmeet"); } UpdateCursor(); }