Przycisk Escape, aby zamknąć formularz Windows Forms w C#

Próbowałem czegoś takiego:

private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    if ((Keys) e.KeyValue == Keys.Escape)
        this.Close();
}

Ale to nie działa.

Potem spróbowałem:

protected override void OnKeyDown(KeyEventArgs e)
{
    base.OnKeyDown(e);
    if (e.KeyCode == Keys.Escape)
        this.Close();
}

I nadal nic nie działa.

KeyPreview w moich właściwościach formularzy Windows Forms jest ustawiony na true ... Co robię źle?

1 odpowiedź

To zawsze będzie działać, niezależnie od odpowiedniego przypisania modułu obsługi zdarzeń, KeyPreview, CancelButton itp .:

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
        if (keyData == Keys.Escape) {
            this.Close();
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.