如果没有Application.Run(),为什么不winform打开?

时间:2014-03-05 10:13:11

标签: c# .net winforms main

我尝试使用下面的代码显示winform,但它会打开并立即关闭。 我无法理解这个的原因。任何想法?

[STAThread]
    static void Main()
    {
        try
        {
            AppDomain.CurrentDomain.UnhandledException += AllUnhandledExceptions;
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);

            Test testWin = new Test();
            testWin.Show();
        }
        catch (Exception ex)
        {
            Logger.Error("Main : " + ex.Message, typeof(Program));
        }
    }

如果我用Application.Run(testWin)替换testWind.Show(),它的工作正常。

2 个答案:

答案 0 :(得分:2)

Application.Run运行消息循环,它基本上处理UI事件等,直到所有可见窗口都关闭。该方法将阻塞,直到消息循环关闭。

你需要运行消息循环才能保持UI,基本上 - 而Show()只会显示窗口,但不会运行任何类型的消息循环本身,而不是阻塞 - 执行{ {1}}方法完成,应用程序终止。

答案 1 :(得分:1)

您应该使用ShowDialog方法。

Test testWin = new Test();
testWin.ShowDialog();