【问题标题】:Open a new form on the main thread在主线程上打开一个新表单
【发布时间】:2013-12-17 21:53:39
【问题描述】:

如何在 C# 的主线程中打开一个新表单?

此时我用这个打开它们:

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

但这会创建一个新线程...我的主表单是我的登录表单。我希望它关闭然后打开我的第二个表单。

【问题讨论】:

  • 为什么不能使用(new Form()).Show()?拥有两个“GUI”线程不是一个好主意。
  • @vcsjones 我已经知道了..所以我正在尝试解决这个问题...
  • @vcsjones 如果你这样做了,那么你的登录表单会在申请期间一直悬而未决,尽管没有用处。
  • @Servy 我并没有真正将这些点与登录表单发生的事情联系起来。现在说得通了。

标签: c# multithreading winforms


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    就用这个

    Application.Run(new OppenMainForm());
    

    【讨论】:

      猜你喜欢
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 2018-05-06
      • 2015-08-12
      相关资源
      最近更新 更多