我有一个包含8个表单的Windows窗体项目。我每次打开新表格时都会这样做:
new FormX().Show();
this.Hide();
由于这个原因,我意识到我正在创建同一形式的多个对象,而它之前的副本存在,即如果我打开FormX然后我隐藏它并调用下一个Form。当我的工作完成并且我不得不回到FormX时,我再次创建了该对象。我不想这样做,因为这会消耗内存并使应用程序变慢。
我想知道是否有办法将所有表单的所有对象存储在一个类/表单中,如下所示:
Form1 obj1=new Form1();
Form2 obj2=new Form2();
每当我需要让其中一个可见时,我只需编写obj1.show()或obj2.show()
是否可以将这些对象存储在Program.cs类中?
答案 0 :(得分:0)
这个问题有些模糊。但根据您的要求,除了您建议的那个之外,您还有几个选择:
Hide()
,只需致电Close()
。Form
类实现为单例。然后确保不关闭每个表单(即继续调用Hide()
),并从静态实例属性访问相关实例。#2的例子:
class Form1 : Form
{
private static readonly Lazy<Form1> _instance = new Lazy<Form1>(() => new Form1());
public static Form1 Instance { get { return _instance.Value; } }
}
然后在其他地方......
Form1.Instance.Show();
// ... do some stuff with Form1
Form1.Instance.Hide();