如何应用这里的单例模式来防止一次又一次地创建form3对象
本文关键字:一次又一次 创建 对象 form3 单例模式 何应用 应用 这里 | 更新日期: 2023-09-27 18:03:52
public Form fr;
private void button2_Click(object sender, EventArgs e)
{
fr = Form1.ActiveForm;
fr.Hide();
Form3 fr1 = new Form3(fr);
fr1.Show();
}
您不需要将Form3
创建为单例(我认为您不能这样做),但您只需要实例化它一次。例如,你可以这样写:
public Form fr;
Form3 fr1 = null;
private void button2_Click(object sender, EventArgs e)
{
fr = Form1.ActiveForm;
fr.Hide();
if(fr1==null)
fr1 = new Form3(fr);
fr1.Show();
}
不要。
你不能在UI组件中使用单例模式,因为Windows窗体封装了一个Win32 hWnd窗口,该窗口最终需要被处理掉,并且你不能复活窗口,你必须重新创建它,这与单例模式相反。
此外,Windows窗体设计器需要一个公共默认构造函数。即使您可以使用单例,您也需要在每次在设计器中编辑表单时禁用私有构造函数。
假设您的项目没有消费者,一个更好的主意是将表单更改为internal
,然后自己跟踪每个实例化。