如何多次打开表单?我有这个事件:
Form2 myForm = new Form2();
private void button_Click(object sender, EventArgs e)
{
myForm.Show();
}
当我使用VisualStudio 2008调试我的项目时,我第一次点击按钮时,表单已显示,但当我关闭它时,我试图再次打开它,我收到类似这样的错误:无法访问已删除的对象。对象名称:'Form2'。
有人可以向我解释这种行为吗?
答案 0 :(得分:3)
您还可以覆盖Form2
Closing
事件,将其中断并调用Hide()
方法。这样,您不必每次要显示窗口时都创建新实例。
修改强>
有关Stackoveflow解释此方法的问题的Here's示例。您需要做的是,在创建Form2类的原始实例时,通过向Form2类添加以下代码来连接其结束事件:
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Hide();
e.Cancel = true;
}
就是这样。您无需更改button_Click
处理程序。
答案 1 :(得分:2)
当您关闭表单时,它已被处理(并且无法再显示),您应该创建新实例(在按钮处理程序事件中):
Form f = new Form();
f.Show();
答案 2 :(得分:1)
您在哪里创建Form2
?
您可以拥有当前表单的本地字段来保存对它的引用,例如:
private Form2 myForm2;
然后当你想要展示它时,你可以这样做:
if(myForm2 == null)
{
myForm2 = new Form2();
}
myForm2.Show();
将第二个片段放在Button_Click事件中,将第一个片段放在Form1类的任何方法之外。它应该工作。