gpt4 book ai didi

c# - 打开新窗口窗体窗口,立即关闭

转载 作者:行者123 更新时间:2023-11-30 13:26:34 33 4
gpt4 key购买 nike

我正在尝试打开一个新的窗体,但它似乎每次都立即关闭。如果我使用 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com