我有两个窗口形式,我想一个接一个地打开它们

时间:2013-09-04 06:19:21

标签: c#

我的MainForm打开正常,但我无法弄清楚如何打开第二个表单。我读到某个地方,我一次只能打开一个?无论如何,我想先打开第二个表单然后再打开我的主表单。

我遇到的问题是,InitializeComponent();不能通过其附属的任何形式访问(据我所知)。

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

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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());
            }
     }

答案 2 :(得分:0)

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

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

答案 3 :(得分: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();
}

希望有所帮助:)

答案 4 :(得分:0)

您也可以使用

Form.showDialog()

它与show()相同,但在窗体关闭时返回False布尔值。 例如:

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

如果您突然需要某些东西,我会发现这个更有用。