[英]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.