隐藏所有开放的表格
我有三种forms。
让我们说A,B,C。
表格A打开表格B,表格B打开表格C.
我添加了按钮隐藏表单C中的所有打开表单。
现在如何使用此按钮隐藏所有三个表单?
我知道一种方法是使用ShowWindow Api,但我不想使用Api调用。
编辑:感谢SoMoS 。
for (int i = Application.OpenForms.Count - 1; i >= 0; i += -1) { if (!object.ReferenceEquals(Application.OpenForms[i], this)) { Application.OpenForms[i].Hide(); } } this.Hide();
要么
formsA(感谢ho1 )
B frm = new B(); frm.Owner = this; frm.Show();
在表格B中
C frm = new C(); frm.Owner = this; frm.Show();
在表单C的按钮单击事件中。
Owner.Owner.Hide(); Owner.Hide(); Hide();
或者感谢Wim Coenen
foreach (Form var in Application.OpenForms) { var.Hide(); }
谢谢。
您只需要访问此集合:
Application.OpenForms
然后你只需要迭代所有项目并隐藏你想要的项目(你可以通过标题检查)或者只是隐藏所有项目。
希望能帮助到你。
这有效:
Owner.Owner.Hide(); Owner.Hide(); Hide();
或者,如果您不确定链中将有多少表单,您可以使用递归方法。
虽然这取决于A是B等的所有者,您可以通过this
作为参数发送到Show
表单时调用Show
来安排。
您可以使用最小化表单的事实,而不是隐藏所有表单,自动最小化所有表单。 所以一旦C.Owner = B,B.Owner = A,你就可以使用(在A中的Click处理程序中):
WindowState = FormWindowState.Minimized
Form2 NewForm = new Form2(); this.Hide(); //Hide Current form NewForm..ShowDialog(); //Show new form this.Show(); //Show Previous form After close new form