簡體   English   中英

程序關閉時未觸發Form.FormClosing

[英]Form.FormClosing not being fired on when program closes

我試圖在關閉程序之前檢測用戶是否保存了工作。 我嘗試了以下編碼:

void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.UserClosing)
        MessageBox.Show("Unsave Work");
}

但這行不通。 當我關閉程序時什么也沒有發生。

在.Net中添加EventHandler的主要方法有兩種。

您可以使用設計器添加它。

在此處輸入圖片說明

或者您可以將其添加到代碼中

public Form1()
{
    InitializeComponent();
    this.FormClosing+=new FormClosingEventHandler(Form1_FormClosing);
}

void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.UserClosing)
    {
        var result = MessageBox.Show("Unsave Work", "", MessageBoxButtons.OKCancel);
        if (result == DialogResult.Cancel)
            e.Cancel = true;      
    }
} 

請首先將您的Formclosing函數綁定到FormClosing事件。

然后檢查如下:

 void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing)
                {
                  if(work not saved)//Check your condition
                   {
                     MessageBox.Show("Unsave Work");
                     e.Cancel = true;
                    }
                }
        }

只是這樣問用戶:

if (MessageBox.Show("Would you like to save your work", "Save work", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                SaveWork();
            }

並且如果您有一種方法可以首先檢測用戶是否保存了工作,那就更好了:

if (!IsWorkSaved())
            {
                if (MessageBox.Show("Would you like to save your work", "Save work", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    SaveWork();
                }
            }

暫無
暫無

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

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