我有三个窗口窗体,我有一个按钮form1和一个按钮form2,如果form1已单击按钮,则显示form2:
form2 f2 = new form2();
f2.show();
form1仍然在背景中并且可见。上还有一个按钮form2。单击该按钮时,会发生form2在后台运行并form3显示的相同事件。什么时候form3显示我想隐藏form1。
我怎样才能做到这一点?是否有任何属性可以帮助我知道后面运行的是哪种形式?
您可以检查您的表单是否有焦点
bool foc = formX.Focused;
您可以使用:Application.OpenForms.
您可以使用Application.OpenForms集合来迭代打开的表单。
然后检查你的名字Form1可以Hide试试
foreach(Form f in Application.OpenForms)
{
if(f.Name == "Form1")
{
f.Hide();
break;
}
}
Form2打开时应该触发一个自定义事件Form3。 Form1应该在显示时订阅该自定义事件Form2,然后Form1可以将其隐藏在该事件处理程序中。
public class Form2
{
public event Action Form3Opened;
public void Bar
{
Form3 other = new Form3();
Form3Opened();
other.Show();
}
}
public class Form1
{
public void Foo()
{
Form2 other = new Form2();
other.Form3Opened += () => Hide();
other.Show();
}
}
是的,您可以使用Application.OpenForms属性来查找应用程序的所有打开表单的集合。
另一种解决方案是可以像调用者表单一样传递父表单参数。例如:对于Form2父是Form1,对于Form3父idForm2