2

我正在尝试同时显示 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();
}

这也不起作用。

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

4

3 回答 3

6

You can create a new ApplicationContext to represent multiple forms:

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();
        }
    }
}

Using that you can now write:

Application.Run(new MultiFormContext(new Form1(), new Form2()));
于 2013-04-19T16:06:03.400 回答
0

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

于 2013-04-19T16:02:19.320 回答
-1

希望你的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();
  }
于 2013-04-19T16:02:05.070 回答