2

我的 MainForm 可以正常打开,但我不知道如何打开第二个表单。我在某处读到一次只能打开一个?无论如何,我希望先打开第二个表单,然后再打开我的主表单。

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

任何关于我应该做什么的想法都会很棒,因为我仍处于学习阶段,我的搜索技能还没有发现任何有用的东西。

4

5 回答 5

2

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

Form1 form = new Form1();
form.Show();
于 2013-09-04T06:21:30.323 回答
2

试试这个:

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());
            }
     }
于 2013-09-04T06:23:32.823 回答
0

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

Form2 tempForm = new Form2();
this.AddOwnedForm(tempForm);
tempForm.Show();
于 2013-09-04T06:26:09.103 回答
0

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

Application.Run(new Form1());

在这种情况下,Form1 被加载并显示。如果您想在 Form1 加载后立即显示您的第二个表单,您可以将以下代码放入您的 Form1_Load -

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

希望有帮助:)

于 2013-09-04T06:35:34.270 回答
0

你也可以使用

Form.showDialog()

它与 show() 相同,但它在表单关闭时返回一个 False 布尔值。例子:

if(Form.showDialog() != true)
{
    // Form is now closed. Do something
}

如果你突然需要一些东西,我发现这个更有用。

于 2013-09-04T06:40:45.023 回答