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;
            }
        }