2
任何时候我想要显示一个新窗体,我创建一个新窗体对象并隐藏当前窗体。 例如:在窗体之间切换
this.Hide();
new Form2().Show();
这样,一个新的对象状态越来越创建了个遍,而旧的形式仍在运行,但隐藏的地方。
我想知道最合适的方法是什么,我一直这样做很长时间,任何时候我都会这样做,我觉得我做错了。我的意思是我们如何访问前一个对象并将其设置为显示而不是创建一个新对象。
任何时候我想要显示一个新窗体,我创建一个新窗体对象并隐藏当前窗体。 例如:在窗体之间切换
this.Hide();
new Form2().Show();
这样,一个新的对象状态越来越创建了个遍,而旧的形式仍在运行,但隐藏的地方。
我想知道最合适的方法是什么,我一直这样做很长时间,任何时候我都会这样做,我觉得我做错了。我的意思是我们如何访问前一个对象并将其设置为显示而不是创建一个新对象。
使用Application.OpenForms属性来获得已经打开的窗体对象并显示。
OpenForms属性表示由应用程序拥有的表格 的只读集合。此集合可以通过索引 的位置或表单的名称进行搜索。
Form1 frm1 = Application.OpenForms["Form1"] as Form1 ;
if (frm1 != null)
{
frm1.Show();
}
这工作相当好哈比卜,我认为解决了我的问题,我会接受你的答案。 – Transcendent
写全局/静态FormManager类跟踪此。并为表单创建按需逻辑。 –
您可以使用[对象池模式](http://en.wikipedia.org/wiki/Object_pool_pattern)来管理您创建的所有表单,并拥有一种方法来取消表单,该表单检查表单实例是否可用,以及如果不是它创建一个 –