/// <summary> /// Key has been pressed down. /// </summary> /// <param name="c">Reference to the source control instance.</param> /// <param name="e">A KeyEventArgs that contains the event data.</param> /// <exception cref="ArgumentNullException"></exception> public virtual void KeyDown(Control c, KeyEventArgs e) { Debug.Assert(c != null); Debug.Assert(e != null); // Validate incoming references if (c == null) { throw new ArgumentNullException(nameof(c)); } if (e == null) { throw new ArgumentNullException(nameof(e)); } switch (e.KeyCode) { case Keys.Enter: case Keys.Space: if (_layout.ItemEnabled) { Point pt = new Point(int.MaxValue, int.MaxValue); OnClick(new MouseEventArgs(MouseButtons.Left, 1, pt.X, pt.Y, 0)); UpdateTargetState(pt); } break; case Keys.Tab: _viewManager.KeyTab(e.Shift); break; case Keys.Home: _viewManager.KeyHome(); break; case Keys.End: _viewManager.KeyEnd(); break; case Keys.Up: _viewManager.KeyUp(); break; case Keys.Down: _viewManager.KeyDown(); break; case Keys.Left: _viewManager.KeyLeft(true); break; case Keys.Right: _viewManager.KeyRight(); break; } }