我试图在关闭程序之前检测用户是否保存了他们的工作。我尝试了以下编码:
void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
MessageBox.Show("Unsave Work");
}
但它不起作用。当我关闭程序时没有任何反应。
我试图在关闭程序之前检测用户是否保存了他们的工作。我尝试了以下编码:
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();
}
}