一次运行不同的表单

时间:2013-04-19 15:58:12

标签: c# winforms

我正在尝试同时显示2种不同的表单。我尝试了以下代码,但它不起作用:

Form1 t1 = new Form1();
Form2 t2 = new Form2();
t2.Show();
t1.Show();

Application.Run();

我还尝试从program.cs运行第一个,从Form1_Load运行另一个:

private void Form1_Load(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.Show();
}

这也不起作用。

我做错了什么?如何同时运行多个表单?

3 个答案:

答案 0 :(得分:6)

您可以创建一个新的ApplicationContext来表示多个表单:

public class MultiFormContext : ApplicationContext
{
    private int openForms;
    public MultiFormContext(params Form[] forms)
    {
        openForms = forms.Length;

        foreach (var form in forms)
        {
            form.FormClosed += (s, args) =>
            {
                //When we have closed the last of the "starting" forms, 
                //end the program.
                if (Interlocked.Decrement(ref openForms) == 0)
                    ExitThread();
            };

            form.Show();
        }
    }
}

使用它你现在可以写:

Application.Run(new MultiFormContext(new Form1(), new Form2()));

答案 1 :(得分:0)

希望你的Program.cs看起来像:

 static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());

    }

并在Form1内尝试:

 private void Form1_Load(object sender, EventArgs e)
  {
      Form2 form2 = new Form2();
      form2.Show();
  }

答案 2 :(得分:0)

如果在Visual Studio中为C#创建新的Windows窗体应用程序,它将使您使用单个窗体,然后您可以在主窗体中添加更多窗体。作为奖励,您将获得主要表单的设计师,您可以在其中拖放控件。