// Remove any active message filter private void RemoveMessageFilter() { if (_messageFilter != null) { Application.RemoveMessageFilter(_messageFilter); _messageFilter = null; } }
// Add filter to redirect to control with handle hWnd private void AddMessageFilter(IntPtr hWnd) { _messageFilter = new RedirectMessageFilter(WindowsMessages.WM_MOUSEWHEEL, hWnd); Application.AddMessageFilter(_messageFilter); }
private void richTextBoxMain_KeyDown(object sender, KeyEventArgs e) { if (e.Control == true) { if (e.KeyCode == Keys.Z)//Undo { richTextBoxMain.Undo(); } else if (e.KeyCode == Keys.Y)//Redo { richTextBoxMain.Redo(); } else if (e.KeyCode == Keys.X)//Cut { richTextBoxMain.Cut(); } else if (e.KeyCode == Keys.C)//Copy { richTextBoxMain.Copy(); } else if (e.KeyCode == Keys.V)//Paste { richTextBoxMain.Paste(); } else if (e.KeyCode == Keys.D)//Clear { richTextBoxMain.Clear(); } else if (e.KeyCode == Keys.A)//SelectAll { richTextBoxMain.SelectAll(); } else { return; } e.Handled = true; } else { // Redirect those keypresses to the right control switch (e.KeyCode) { case Keys.PageDown: RedirectMessageFilter.PostMessage(listViewEditor.Handle, (int)WindowsMessages.WM_KEYDOWN, new IntPtr((int)VirtualKeys.VK_NEXT), IntPtr.Zero); break; case Keys.PageUp: RedirectMessageFilter.PostMessage(listViewEditor.Handle, (int)WindowsMessages.WM_KEYDOWN, new IntPtr((int)VirtualKeys.VK_PRIOR), IntPtr.Zero); break; // case Keys.Home: // RedirectMessageFilter.PostMessage(listViewEditor.Handle, (int)WindowsMessages.WM_KEYDOWN, new IntPtr((int)VirtualKeys.VK_HOME), IntPtr.Zero); // break; // case Keys.End: // RedirectMessageFilter.PostMessage(listViewEditor.Handle, (int)WindowsMessages.WM_KEYDOWN, new IntPtr((int)VirtualKeys.VK_END), IntPtr.Zero); // break; default: return; } e.Handled = true; } }