I have a parent form that contains a lot of controls. What I am trying to do is filter all of the key presses for that form. The trouble is that if the focus is on one of the controls on the form then the parent form is not getting the key press event, so how do I capture the key down event?
2 Answers
This will only work on form, but not if any other component is in focus
public partial class ChildForm : Form { public ChildForm() { KeyPress += KeyPressHandler; } public KeyPressHandler(object sender, KeyPressEventArgs e) { if (_parent != null) { _parent.NotifyKeyPress(e); } } } This will work even when other components are in focus
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.F1) { MessageBox.Show("You pressed the F1 key"); return true; // indicate that you handled this keystroke } // Call the base class return base.ProcessCmdKey(ref msg, keyData); }