Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Escape button to close Windows Forms form in C#

Tags:

c#

winforms

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?

like image 740
yeahumok Avatar asked Feb 18 '10 18:02

yeahumok


2 Answers

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); } 
like image 110
Hans Passant Avatar answered Sep 19 '22 08:09

Hans Passant


You should just be able to set the Form's CancelButton property to your Cancel button and then you won't need any code.

like image 28
Shawn Steward Avatar answered Sep 20 '22 08:09

Shawn Steward