从模态对话框中关闭消息框会关闭对话框。

问题描述 投票:1回答:1

我有一个自定义的模态对话框,我想在出错时调用一个Messagebox。但是在关闭消息框时,对话框也会关闭。

有什么方法可以让对话框保持打开,并直接关闭消息框?

wpf xaml dialog modal-dialog messagebox
1个回答
1
投票

这似乎和前面提到的那个问题一样。此处. 我找到了修复的方法,通过它,大概证明这确实是一个bug。我的解决方案,如前所述 此处:

一个变通的方法是为表单的FormClosing事件添加一个处理程序,这样你就可以在那里取消它。

这个错误似乎可以通过检查 FormClosingEventArgs.CloseReason. 这通常是 "UserClosing",在正常关闭时(甚至在程序上通过调用 this.Close()),但在这个错误中,它被设置为 "无",我认为这个值是某种默认值,通常不应该被使用。

private void form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.None)
    {
        e.Cancel = true;
        return;
    }
    // any other OnClose code you may wish to execute.
}

[编辑]

抱歉,链接问题中的问题是OP使用了 form.DialogResult 作为消息框结果的临时变量,并导致主表单关闭,所以,事实上。 相关的。用一个临时变量来处理这样的事情,各位。

最有可能的 真正 的原因是,该表格的 AcceptButton 被设置,而实际接受按钮的代码会进行验证。即使验证会引发错误。AcceptButton 将导致表格的 DialogResult 拟设为 OK,这将关闭表单。为了防止这种情况发生,可以不设置关闭表单中的 AcceptButton 属性,只需设置 DialogResult 手动,或者在出错时,特别清除了 DialogResult 将其设置为 DialogResult.None.

© www.soinside.com 2019 - 2024. All rights reserved.