簡體   English   中英

使用 X 或創建按鈕關閉表單

[英]Closing Form with X or created button

我有一個登錄表單,我需要知道用戶是否按下了表單上的 X 按鈕或將他帶到新表單的按鈕。 如果用戶使用 Alt+F4 或 X 按鈕關閉程序,則必須關閉程序。

我正在嘗試使用 FormClosing 事件來檢查用戶是否按下 X 或登錄。

 private void LogIn_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (string.Equals((sender as Button).Name, @"loginButton"))
        {
            //some code
        }
        else
        {
            Close();
        }
    }

FormClosing事件處理程序接收包含屬性CloseReasonFormClosingEventArgs參數,但在您的上下文中,這還不夠。
實際上,在這兩種情況下(ALT + F4 / X-點擊或ButtonClick)的參數將包含一個CloseReason等於UserClosing。

我建議你一個簡單的解決方法。 在您的按鈕單擊處理程序中(您應該在表單上調用關閉操作,而不是在表單關閉事件處理程序本身)中,向表單的 Tag 屬性添加一些內容,如下所示:

private void Button1_Click(object sender, EventArgs e)
{
    this.Tag = "ClosedByUser";
    this.Close();
}

現在在 FormClosing 事件處理程序中很容易檢查這個屬性

private void LogIn_FormClosing(object sender, FormClosingEventArgs e)
{
    if (this.Tag != null)
    {
        // Button clicked
    }
    else
    {
        // other reasons
        // Dp not call Close here, you are already closing 
        // if you don't set e.Cancel = true;
    }
}

暫無
暫無

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

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