如何在表格上打开新窗口?

时间:2011-09-05 14:52:00

标签: c# winforms

如何在关闭按钮上打开表单1单击表单2中的X. 我试过这个,但它不起作用:

private void supplierShow_FormClosing(object sender, EventArgs e)
{
    new suppliersList().Show();
}

谢谢。

2 个答案:

答案 0 :(得分:1)

在不知道更多代码的情况下不完全确定,但对我来说,看起来您正在声明一个局部变量(可能是基类Form的新供应商列表)并显示另一个表单的Closing事件中的表单。

你的Form2对象很可能会很快被删除/处理/垃圾收集,此时我并不完全确定在该范围内声明的表单仍然会有一个美好的生活。

如果Form2是申请表,申请将在您关闭时实际终止。

总的来说,我认为这种表单切换最好通过main方法完成和控制,在你可能拥有Application.Run(new Form2());的同一个地方,因为在那里你可以完全控制应用程序流和MessageLoops ..

答案 1 :(得分:0)

我需要解决方案:

<强>首先

您可能对Program class中的suppliersList有唯一的引用:

public static suppliersList SuppList = new suppliersList();

如果您愿意,现在可以隐藏它:

Program.SuppList.Hide();

你也可以随时出示:

Program.SuppList.Show();

小心!不要Dispose SuppList。如果您这样做,请为其分配一个新对象new suppliersList();。请注意,只有当form1不是主要表单(即Application.Run(new form1());

时,此解决方案才会成功

<强>第二

您可以form2作为form1

窗口的子项启动new suppliersList().Show(this);
{{1}}

因为,正如在另一个答案中,应用程序循环在form1上。如果form1关闭,那么整个应用程序也将关闭。但是,启动主窗口的子窗口将阻止应用程序关闭。

如果答案对您有用,请将其标记为您的最佳答案。