0

如果工作未保存在屏幕上,我试图在用户想要关闭屏幕时警告用户。因为我不希望他们失去工作。我通过弹出窗口警告用户“您确定要关闭屏幕而不保存您的工作吗?”。当用户单击“是”时,它也应该关闭弹出窗口和屏幕。但是我的弹出窗口立即出现,用户被该弹出窗口卡住了。

这是 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 {

            }
        }
    } 

我在这里做错了什么?

4

1 回答 1

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:您应该为(got from )添加条件e.CloseReason以确保它被用户关闭。

于 2013-11-04T11:08:29.330 回答