public override void OnKeyDown(int keyCode, int shift) { base.OnKeyDown(keyCode, shift); if (keyCode == 27) //ESC 键,取消所有操作 { Reset(); this.Stop(); WSGRI.DigitalFactory.Commands.ICommand command = DFApplication.Application.GetCommand("WSGRI.DigitalFactory.DF2DControl.cmdPan"); if (command != null) { command.Execute(); } return; } if (keyCode == 13 || keyCode == 32) //按ENTER、SPACEBAR键 开始绘制联合操作 { DoUnion(); return; } if (keyCode == 46) //DEL键,删除选中的要素 { CommonFunction.DelFeaturesFromArray(m_MapControl, ref m_FeatureArray); Reset(); return; } }
public override void OnKeyDown(int keyCode, int shift) { // TODO: 添加 DrawPolyline.OnKeyDown 实现 base.OnKeyDown(keyCode, shift); IPoint tempPoint = new PointClass(); tempPoint.X = m_pLastPoint.X; tempPoint.Y = m_pLastPoint.Y; if (keyCode == 72) //按H键,绘制圆弧 { if (m_drawType == 1) { m_drawState = "Line_Arc"; //绘制直线……圆弧 } else if (m_drawType == 2) { m_drawState = "Arc_Arc"; //绘制圆弧……圆弧 } return; } if (keyCode == 76) //按L键,绘制直线 { if (m_drawType == 1) { m_drawState = "Line_Line";; //绘制直线……直线 } else if (m_drawType == 2) { m_drawState = "Line_Line"; //绘制圆弧……直线 } return; } if (keyCode == 84) //按T键,绘制圆弧……切线 { m_drawState = "Arc_TLine"; return; } if (keyCode == 85) //按U键,回退 { Undo(); return; } if (keyCode == 78 && m_pUndoArray.Count >= 2) //按N键,输入左折角 { frmLeftCorner fromFixLeftCorner = new frmLeftCorner(); fromFixLeftCorner.ShowDialog(); return; } if (keyCode == 79 && m_bInUse) //按(O)orientation键,输入方向 { frmFixAzim fromFixAzim = new frmFixAzim(); fromFixAzim.ShowDialog(); return; } if (keyCode == 68 && m_bInUse) //按D键,输入固定长度 { frmFixLength fromFixLength = new frmFixLength(); fromFixLength.ShowDialog(); return; } if (keyCode == 70 && m_bInUse) //按F键,输入长度+方位角 { frmLengthAzim.m_pPoint = tempPoint; frmLengthAzim fromLengthDirect = new frmLengthAzim(); fromLengthDirect.ShowDialog(); if (m_bInputWindowCancel == false) //若用户没用取消输入 { DrawPolylineMouseDown(m_pAnchorPoint, m_drawState); } return; } if (keyCode == 65) //按A键,输入绝对坐标 { frmAbsXYZ.m_pPoint = m_pAnchorPoint; frmAbsXYZ formXYZ = new frmAbsXYZ(); formXYZ.ShowDialog(); if (m_bInputWindowCancel == false) //若用户没用取消输入 { DrawPolylineMouseDown(m_pAnchorPoint, m_drawState); } return; } if (keyCode == 82 && m_bInUse) //按R键,输入相对坐标 { frmRelaXYZ.m_pPoint = tempPoint; // m_pToPoint; frmRelaXYZ formRelaXYZ = new frmRelaXYZ(); formRelaXYZ.ShowDialog(); if (m_bInputWindowCancel == false) //若用户没用取消输入 { DrawPolylineMouseDown(m_pAnchorPoint, m_drawState); } return; } if (keyCode == 80 && m_bInUse) //按P键,生成平行线 { m_pSegment = null; m_bKeyCodeP = true; return; } if (keyCode == 83 && m_pUndoArray.Count >= 2) //按S键,生成直角 { m_bkeyCodeS = true; if (((IFeatureLayer)m_CurrentLayer).FeatureClass.ShapeType == esriGeometryType.esriGeometryPolyline) { m_pLastFeedback = new NewLineFeedbackClass(); m_pLastLineFeed = (INewLineFeedback)m_pLastFeedback; IPoint pStartPoint = ((PointStruct)m_pUndoArray.get_Element(0)).Point; m_pLastLineFeed.Start(pStartPoint); } return; } if (keyCode == 67 && m_pUndoArray.Count >= 4) //按C键,封闭结束绘制 { IPoint pStartPoint = new PointClass(); IPoint pEndPoint = new PointClass(); pStartPoint = ((PointStruct)m_pUndoArray.get_Element(0)).Point; pEndPoint = ((PointStruct)m_pUndoArray.get_Element(m_pUndoArray.Count - 1)).Point; AddPointUndoArray(pEndPoint, 1, ref m_pUndoArray); AddPointUndoArray(pStartPoint, 1, ref m_pUndoArray); EndDrawPolyline(); return; } if ((keyCode == 69 || keyCode == 13 || keyCode == 32) && m_bInUse) //按E键、ENTER 键、SPACEBAR 键结束绘制 { EndDrawPolyline(); return; } if (keyCode == 27) //ESC 键,取消所有操作 { Reset(); this.Stop(); WSGRI.DigitalFactory.Commands.ICommand command = DFApplication.Application.GetCommand("WSGRI.DigitalFactory.DF2DControl.cmdPan"); if (command != null) { command.Execute(); } return; } }