如果用户没有在屏幕上保存工作,我想在用户关闭屏幕时发出警告。因为我不希望他们失去工作。我用弹出窗口警告用户说“你确定要关闭屏幕而不保存你的工作吗?”。当用户单击YES时,它应该关闭弹出窗口和屏幕。但是我的弹出窗口立即出现,用户被弹出窗口卡住了。
这是FormClosing事件的代码
private void BudgetSalesFormulaDefinitionFrm_FormClosing(object sender, FormClosingEventArgs e)
{
if (txtFormula.Text != string.Empty || txtFormulName.Text != string.Empty)
{
if (XtraMessageBox.Show("Are you sure that you want to close the screen without saving your work?", "Warning?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
this.DialogResult = System.Windows.Forms.DialogResult.Yes;
this.Close();
}
else {
}
}
}
我在这里做错了什么?
答案 0 :(得分:2)
用户点击Yes
时,您无需关闭表单,我们只需在用户点击e.Cancel = true
时设置NO
。
if (txtFormula.Text != string.Empty || txtFormulName.Text != string.Empty){
if (XtraMessageBox.Show("Are you sure that you want to close the screen without saving your work?",
"Warning?",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question) != DialogResult.Yes) {
e.Cancel = true;
}
}
注意:您应该为CloseReason
添加条件(从e.CloseReason
获取),以确保用户已关闭该条件。