打开新的窗体窗口,立即关闭

use*_*580 3 c# winforms

我正在尝试打开一个新的窗体,但它似乎每次都会立即关闭.如果我使用ShowDialog()而不是Show(),它可以工作,但这不是我的意图.

class Forms
{
    Main mainForm;
    Thread mainThread;

    public Forms()
    {

    }
    private void ThreadProc()
    {
        try
        {
            mainForm = new Main();
            mainForm.Show();

        }
        catch {  }
    }
    public void startMain()
    {
        mainThread = new Thread(new ThreadStart(ThreadProc));
        mainThread.SetApartmentState(ApartmentState.STA);
        mainThread.Start();
    }
}
Run Code Online (Sandbox Code Playgroud)

dig*_*All 6

问题是你的mainThread没有运行任何消息循环(负责对所有与GUI相关的消息做出反应,如调整大小,按钮点击等等),所以在调用mainForm.Show()线程完成后.
实际上winforms应用程序通常是这样开始的:

Application.Run(new MainForm());
Run Code Online (Sandbox Code Playgroud)

在那里,你可以中看到MSDN文档,Application.Run开始在当前线程标准的消息循环和显示形式.

如果你使用ShowDialog()它,因为模态表单在内部运行自己的消息循环.

我不知道你想要完成什么,但ShowDialog可能是最简单的解决方案; 万一你不喜欢它只需更换你mainForm.ShowApplication.Run(mainForm),它应该工作.