如果未保存工作,则在关闭屏幕时警告用户

时间:2013-11-04 11:00:09

标签: c# winforms

如果用户没有在屏幕上保存工作,我想在用户关闭屏幕时发出警告。因为我不希望他们失去工作。我用弹出窗口警告用户说“你确定要关闭屏幕而不保存你的工作吗?”。当用户单击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 {

            }
        }
    } 

我在这里做错了什么?

1 个答案:

答案 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获取),以确保用户已关闭该条件。