我正在尝试同时显示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();
}
这也不起作用。
我做错了什么?如何同时运行多个表单?
答案 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窗体应用程序,它将使您使用单个窗体,然后您可以在主窗体中添加更多窗体。作为奖励,您将获得主要表单的设计师,您可以在其中拖放控件。