我遇到的问题是由于某种原因ShowDialog在处理异常后立即返回。但是,它适用于MessageBox.Show()或第二次调用ShowDialog。这个问题的最佳解决方法是什么?
我只能找到this。我无法相信没有其他人有这个问题。
我正在使用.net compact framework 3.5。示例代码:
try
{
using(SomeForm f = new SomeForm())
{
f.ShowDialog();
}
}
catch(SomeException)
{
using(SomeOtherForm f = new SomeOtherForm())
{
f.ShowDialog(); // this returns immediately
// if this is MessageBox.Show(), it works correctly.
f.ShowDialog(); // then this works fine
}
}
答案 0 :(得分:1)
我刚才在another question中回答了以下内容,我认为这与同一问题有关。虽然在你的情况下2)可能不起作用(除非手动阻止线程)。
我也遇到过这个问题。 这是.NET CF中的已知问题 (v2.0),但我在使用时也有 v3.5(虽然在哪种情况下 它发生的更具体)。您可以 找到(旧的,仍然活跃的)错误 在这报告。
调用MessageBox.Show()会导致它 立即关闭,但在我的情况下 有两种解决方法:
1)致电 MessageBox.Show()第二次。 它然后阻止直到关闭 用户。你可以先检查一下 MessageBox.Show()过早关闭 通过检查DialogResult。我不 记住它返回的结果 确切地说,当它失败时,我记得它 给出非默认结果。
2)创建自定义表单并调用 ShowDialog()就是这样。它起作用了 我,但其他人报告了它 不起作用。你也可以打电话 显示()并使其自行阻止 (别忘了打电话 Application.DoEvents()所以它保持不变 处理事件)。