簡體   English   中英

如何在keydown事件上關閉表單?

[英]How to close forms on a keydown event?

我有一個表單proFileDialog,它使用表單mnuForm上的ShowDialog()調用。 當我按下給定的鍵時,我想關閉這兩種形式。 看起來我在文本框上進行這項工作以觸發消息框時沒有遇到任何問題,但是對於表單我必須做錯了。 當我按下回車鍵時,以下代碼絕對沒有任何反應。

    void proFileDialog_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode==Keys.Enter)
        {
            proFileDialog.Close();
            this.Close();
        }
    }

使用proFileDialog.KeyPreview = true它會對大多數鍵做出反應,但是我沒有得到對回車鍵或其他非字母/數字鍵的響應。

您需要設置表單的KeyPreview屬性。 將此設置為True ,表單將在具有焦點的控件之前接收按鍵事件,如下所示:

關鍵預覽屬性

您的上述代碼將適用於表單上的任何位置。

除非我完全誤解了你,否則有兩種方法可以關閉這兩種形式,我可以想到的一種方法是將你的父表單傳遞給你的子表單,如下所示:

var pfd = new profFileDialog(this);
pfd.ShowDialog();

在您的孩子形式:

private readonly mnuForm _parentForm;

public profFileDialog(mnuForm parentForm)
{
    _parentForm = parentForm;
    KeyPreview = true; // <-- see Simon's Answer

    // other code ...
}

然后簡單地關閉兩個:

private void proFileDialog_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        this.Close();
        _parentForm.Close();
    }
}

如果你想關閉整個應用程序(你可能沒有),你可以使用Application.Exit();

private void proFileDialog_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        Application.Exit();
    }
}

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM