我正在尝试打开一个新的窗体,但它似乎每次都立即关闭。 如果我使用 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();
}
}
最佳答案
问题是您的 mainThread 没有运行任何消息循环(负责对所有与 GUI 相关的消息使用react,例如调整大小、按钮点击等...),因此在调用 mainForm.Show( )
线程结束。
事实上 winforms 应用程序通常是这样开始的:
Application.Run(new MainForm());
在哪里,正如您在 MSDN documentation 中看到的那样, Application.Run
在当前线程中启动标准消息循环并显示表单。
如果您使用 ShowDialog()
它会起作用,因为模态窗体在内部运行它们自己的消息循环。
我不知道您要完成什么,但 ShowDialog 可能是最简单的解决方案;如果您不喜欢它,只需将您的 mainForm.Show
替换为 Application.Run(mainForm)
就可以了。
关于c# - 打开新窗口窗体窗口,立即关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21077804/