C# 如何在这里应用单例模式来防止一次又一次地创建fom3对象
您不需要将C# 如何在这里应用单例模式来防止一次又一次地创建fom3对象,c#,C#,您不需要将Form3创建为singleton(我认为您不能这样做),但只需要实例化一次。例如,您可以使用如下内容: public Form fr; private void button2_Click(object sender, EventArgs e) { fr = Form1.ActiveForm; fr.Hide(); Form3 fr1 = new Form3(fr); fr1.Show(); } 不要 您不能在UI组件中
Form3
创建为singleton(我认为您不能这样做),但只需要实例化一次。例如,您可以使用如下内容:
public Form fr;
private void button2_Click(object sender, EventArgs e)
{
fr = Form1.ActiveForm;
fr.Hide();
Form3 fr1 = new Form3(fr);
fr1.Show();
}
不要
您不能在UI组件中使用单例模式,因为Windows窗体封装了Win32 hWnd窗口(最终需要处理),并且您无法恢复窗口,必须重新创建它,这与单例模式相反
此外,Windows窗体设计器需要一个公共默认构造函数。即使可以使用singleton,也需要在每次在设计器中编辑表单时禁用私有构造函数
假设您的项目没有使用者,更好的办法是将表单更改为
内部
,自己跟踪每个实例。为什么需要单例?您有一个对表单的类级引用
,调用Hide
不会破坏表单。如果正确实例化了类级变量,则不需要创建新实例。只需对引用调用Show
。正如Kenneth所说,这里不需要singleton。构造一次,您可以根据需要多次执行.Show()
和.Hide()
。
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();
}