C# 在主线程上打开一个新窗体

C# 在主线程上打开一个新窗体,c#,multithreading,winforms,C#,Multithreading,Winforms,如何从C#中的主线程打开新窗体 此时,我使用以下方法打开它们: System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(oppenMainForm)); t.SetApartmentState(ApartmentState.STA); t.Start(); 但这创造了一条新的线索。。。我的主表单是我的登录表单。。我希望它关闭,然后打开我的第二个表单。转到您的program.

如何从C#中的主线程打开新窗体

此时,我使用以下方法打开它们:

System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(oppenMainForm));
t.SetApartmentState(ApartmentState.STA);
t.Start();

但这创造了一条新的线索。。。我的主表单是我的登录表单。。我希望它关闭,然后打开我的第二个表单。

转到您的program.cs文件并对其进行更改,以便显示您的登录表单,然后在该表单关闭后,确定是否应打开另一个表单:

它看起来可能或多或少像这样:

LoginForm loginform = new LoginForm();
Application.Run(loginform);

if (loginform.DialogResult == DialogResult.Yes)
    Application.Run(new MainForm());
//TODO handle error cases
就用这个

Application.Run(new OppenMainForm());

为什么不能使用
(新表单()).Show()
?拥有两个“GUI”线程不是一个好主意。@vcsjones我已经知道了。。因此,我正在尝试修复…@vcsjones如果您这样做,那么您的登录表单在应用程序期间会一直挂着,尽管它没有用。@Servy我并没有真正将这些点与登录表单的情况联系起来。现在有道理了。