System.Windows.Forms.Form.ProcessCmdKey C# (CSharp) Method

ProcessCmdKey() protected method

protected ProcessCmdKey ( Message &msg, Keys keyData ) : bool
msg Message
keyData Keys
return bool
		protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
			if (base.ProcessCmdKey (ref msg, keyData)) {
				return true;
			}

			// Handle keyboard cues state.
			if ((keyData & Keys.Alt) != 0) {
				Control toplevel = TopLevelControl;
				if (toplevel != null) {
					IntPtr param = MakeParam ((int) MsgUIState.UIS_CLEAR, (int) MsgUIState.UISF_HIDEACCEL);
					XplatUI.SendMessage (toplevel.Handle, Msg.WM_CHANGEUISTATE, param, IntPtr.Zero);
				}
			}

			// Give our menu a shot
			if (ActiveMenu != null) {
				if (ActiveMenu.ProcessCmdKey (ref msg, keyData))
					return true;
			}

			// Detect any active ContextMenu for a child control that
			// can't receive focus (which means: both input and preprocess)
			if (ActiveTracker != null && ActiveTracker.TopMenu is ContextMenu) {
				ContextMenu cmenu = ActiveTracker.TopMenu as ContextMenu;
				if (cmenu.SourceControl != this && cmenu.ProcessCmdKey (ref msg, keyData))
					return true;
			}

			if (IsMdiChild) {
				switch (keyData)
				{
				case Keys.Control | Keys.F4:
				case Keys.Control | Keys.Shift | Keys.F4:
					Close ();
					return true;
				case Keys.Control | Keys.Tab:
				case Keys.Control | Keys.F6:
					MdiParent.MdiContainer.ActivateNextChild ();
					return true;
				case Keys.Control | Keys.Shift | Keys.Tab:
				case Keys.Control | Keys.Shift | Keys.F6:
					MdiParent.MdiContainer.ActivatePreviousChild ();
					return true;
				case Keys.Alt | Keys.OemMinus:
				case Keys.Alt | Keys.Subtract:
					(this.WindowManager as MdiWindowManager).ShowPopup (Point.Empty);
					return true;
				}
			}

			return false;
		}
Form