如何多次打开和关闭窗体
本文关键字:窗体 何多次 | 更新日期: 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类中,置于任何方法之外。