C# 我有两个windows窗体,我想一个接一个地打开它们

C# 我有两个windows窗体,我想一个接一个地打开它们,c#,C#,我的主窗体打开得很好,但我不知道如何打开第二个窗体。我在某个地方读到,我一次只能打开一个?无论如何,我希望先打开第二个表单,然后再打开主表单 我遇到的问题是,InitializeComponent();除了它所附加的表单之外,其他任何表单都无法访问(据我所知) 任何关于我应该做什么的想法都会很好,因为我仍处于学习阶段,而且我的搜索技能没有任何用处。你应该创建一个表单实例,然后打开它: Form1 form = new Form1(); form.Show(); 您应该创建表单的实例,然后打开它

我的主窗体打开得很好,但我不知道如何打开第二个窗体。我在某个地方读到,我一次只能打开一个?无论如何,我希望先打开第二个表单,然后再打开主表单

我遇到的问题是,InitializeComponent();除了它所附加的表单之外,其他任何表单都无法访问(据我所知)


任何关于我应该做什么的想法都会很好,因为我仍处于学习阶段,而且我的搜索技能没有任何用处。

你应该创建一个表单实例,然后打开它:

Form1 form = new Form1();
form.Show();

您应该创建表单的实例,然后打开它:

Form1 form = new Form1();
form.Show();
试试这个:

static class Program
     {
        [STAThread]
          static void Main()
            {
              Application.EnableVisualStyles();
              Application.SetCompatibleTextRenderingDefault(false);

              var thread = new Thread(ThreadStart);
              thread.TrySetApartmentState(ApartmentState.STA); 
              thread.Start(); 

              Application.Run(new Form1());
            }

            private static void ThreadStart()
            {
              Application.Run(new Form2());
            }
     }
试试这个:

static class Program
     {
        [STAThread]
          static void Main()
            {
              Application.EnableVisualStyles();
              Application.SetCompatibleTextRenderingDefault(false);

              var thread = new Thread(ThreadStart);
              thread.TrySetApartmentState(ApartmentState.STA); 
              thread.Start(); 

              Application.Run(new Form1());
            }

            private static void ThreadStart()
            {
              Application.Run(new Form2());
            }
     }

您可以在Form1.cs中使用此代码:

Form2 tempForm = new Form2();
this.AddOwnedForm(tempForm);
tempForm.Show();

您可以在Form1.cs中使用此代码:

Form2 tempForm = new Form2();
this.AddOwnedForm(tempForm);
tempForm.Show();

运行应用程序时,正如您可能已经知道的,main()是应用程序的入口点。在main()中,您将能够找到以下代码,这些代码初始化并显示应首先加载哪个表单

Application.Run(new Form1());
在这种情况下,将加载并显示Form1。如果您想在Form1加载后立即显示第二个表单,可以在Form1\u加载中添加以下代码-

private void Form1_load(object send, EventArgs e)
{
      Form2 newForm = new Form2;
      newForm.show();
}

希望对您有所帮助:)

当您运行应用程序时,您可能已经知道,main()是应用程序的入口点。在main()中,您将能够找到以下代码,这些代码初始化并显示应首先加载哪个表单

Application.Run(new Form1());
在这种情况下,将加载并显示Form1。如果您想在Form1加载后立即显示第二个表单,可以在Form1\u加载中添加以下代码-

private void Form1_load(object send, EventArgs e)
{
      Form2 newForm = new Form2;
      newForm.show();
}
希望对您有所帮助:)

您也可以使用

Form.showDialog()
它与show()相同,但在窗体关闭时返回一个假布尔值。 例如:

我发现这一条在你突然需要东西时更有用。

你也可以使用

Form.showDialog()
它与show()相同,但在窗体关闭时返回一个假布尔值。 例如:


如果你突然需要什么东西,我觉得这个更有用。

@AmazingMrBrock将此标记为答案就足够了@让人惊讶的是,布罗克先生将此作为答案就足够了