如何多次打开和关闭窗体

本文关键字:窗体 何多次 | 更新日期: 2023-09-27 18:12:12

如何多次打开表单?我有这个事件:

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

当我用VisualStudio 2008调试我的项目时,我第一次点击按钮,窗体显示,但是当我关闭它时,我试图再次打开它,我得到一个类似于这样的错误:无法访问消除的对象。对象名称:'Form2'.

谁能给我解释一下这种行为?

如何多次打开和关闭窗体

您也可以覆盖Form2,中断Closing事件并调用Hide()方法。这样,您就不必在每次要显示窗口时都创建新实例。

编辑:


以下是Stackoveflow上的问题示例,解释了这种方法。您需要做的是,当创建Form2类的原始实例时,通过向Form2类添加以下代码来连接到它的关闭事件:

    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        Hide();
        e.Cancel = true; 
    }

就这些。您不需要更改您的button_Click处理程序

当你关闭你的窗体,它被处置(不能再次显示),你应该创建一个新的实例(在你的按钮处理程序事件):

Form f = new Form();
f.Show();

在哪里创建Form2 ?

你可以有一个当前表单的局部字段来保存对它的引用,比如:

private Form2 myForm2;

那么当你想显示它时,你可以这样做:

if(myForm2 == null)
{
  myForm2 = new Form2();
}
myForm2.Show();

将第二个代码片段放在Button_Click事件中,将第一个代码片段放在Form1类中,置于任何方法之外。