I have tried the following:
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if ((Keys) e.KeyValue == Keys.Escape) this.Close(); }
But it doesn't work.
Then I tried this:
protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); if (e.KeyCode == Keys.Escape) this.Close(); }
And still nothing's working.
The KeyPreview on my Windows Forms form properties is set to true... What am I doing wrong?
This will always work, regardless of proper event handler assignment, KeyPreview
, CancelButton
, etc:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.Escape) { this.Close(); return true; } return base.ProcessCmdKey(ref msg, keyData); }
You should just be able to set the Form's CancelButton
property to your Cancel button and then you won't need any code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With