private void xxxGraph_KeyUp(object sender, KeyEventArgs e) { ZedGraphControl zgc = (ZedGraphControl)sender; GraphPane pane = zgc.GraphPane; double xaxis_min = volatility_xaxis_min; double xaxis_max = volatility_xaxis_max; double xaxis_maj = volatility_xaxis_maj; double xaxis_mor = volatility_xaxis_mor; double yaxis_min = volatility_yaxis_min; double yaxis_max = volatility_yaxis_max; double yaxis_maj = volatility_yaxis_maj; double yaxis_mor = volatility_yaxis_mor; switch (e.KeyCode) { case Keys.Up: pane.YAxis.Scale.Min += pane.YAxis.Scale.MajorStep; pane.YAxis.Scale.Max += pane.YAxis.Scale.MajorStep; xxxGraph_ZoomEvent(zgc, null, null); break; case Keys.Down: if (pane.YAxis.Scale.Min > pane.YAxis.Scale.MajorStep) { pane.YAxis.Scale.Max -= pane.YAxis.Scale.MajorStep; pane.YAxis.Scale.Min -= pane.YAxis.Scale.MajorStep; } else { pane.YAxis.Scale.Max -= pane.YAxis.Scale.Min; pane.YAxis.Scale.Min = 0; } xxxGraph_ZoomEvent(zgc, null, null); break; case Keys.Left: if (pane.XAxis.Scale.Min > pane.XAxis.Scale.MajorStep) { pane.XAxis.Scale.Max -= pane.XAxis.Scale.MajorStep; pane.XAxis.Scale.Min -= pane.XAxis.Scale.MajorStep; } else { pane.XAxis.Scale.Max -= pane.XAxis.Scale.Min; pane.XAxis.Scale.Min = 0; } xxxGraph_ZoomEvent(zgc, null, null); break; case Keys.Right: if (pane.XAxis.Scale.Max + pane.XAxis.Scale.MajorStep < xaxis_max) { pane.XAxis.Scale.Min += pane.XAxis.Scale.MajorStep; pane.XAxis.Scale.Max += pane.XAxis.Scale.MajorStep; } else { pane.XAxis.Scale.Min += xaxis_max - pane.XAxis.Scale.Max; pane.XAxis.Scale.Max = xaxis_max; } xxxGraph_ZoomEvent(zgc, null, null); break; case Keys.PageUp: case Keys.PageDown: PointF centerP = pane.GeneralTransform((pane.XAxis.Scale.Min + pane.XAxis.Scale.Max) / 2, (pane.YAxis.Scale.Min + pane.YAxis.Scale.Max) / 2, CoordType.AxisXYScale); zgc.ZoomPane(pane, (1 + (e.KeyCode == Keys.PageUp ? 1.0 : -1.0) * zgc.ZoomStepFraction), centerP, true); if (pane.XAxis.Scale.Min < 0) { pane.XAxis.Scale.Min = 0; } if (pane.XAxis.Scale.Max > xaxis_max) { pane.XAxis.Scale.Max = xaxis_max; } if (pane.YAxis.Scale.Min < 0) { pane.YAxis.Scale.Min = 0; } xxxGraph_ZoomEvent(zgc, null, null); break; case Keys.Space: xxxGraph_ScaleToDefault(sender, null); xxxGraph_ZoomEvent(zgc, null, null); break; } }