我正在设计一组顺序模态对话框。以下代码似乎可以正常工作,没有任何问题。通过创建自定义ApplicationContext并将其传递给Application.Run,或者将最后一个模式对话框传递给Application.Run而不是调用ShowDialog,我将获得什么? (编辑:显然调用Application.Run(...)将替换Application.Exit())
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 f = new Form1();
f.ShowDialog(); //Show a modal dialog
Form1 f2 = new Form1();
f2.ShowDialog(); //Chain another modal dialog
Application.Exit();
}
答案 0 :(得分:1)
不,如果你想以这种方式构建你的程序,那么调用Application.Run()是没有意义的。调用Application.Exit()时没有意义,它已经在Main()方法结束时终止。
Form.ShowDialog()方法已经在引擎盖下调用了Application.Run()。对话框变为模态的基本方式以及为什么您的代码不会立即恢复到ShowDialog()之后的下一个语句。就像使用Show()时一样。直到该调度程序循环结束,通过关闭表单或设置DialogResult属性来触发。
通常通过检查ShowDialog()返回值来测试通常需要测试的内容。现在,当第一个窗口出现时,用户没有好办法结束你的应用程序,这可能会让人很困惑。