我有3个表格。我怎样才能使一个表单显示为.Show()而另一个表单用.Hide()从单独的表单中隐藏?
这是我的代码的一部分
private void buttonYes_Click(object sender, EventArgs e)
{
LoggedIn loggedinform = new LoggedIn();
loggedinform.Hide(); // Hides another form that is in the background
MainForm mainform = new MainForm();
mainform.Show(); // Show first form
this.Hide(); // Hides current form
}
一个问题是,LoggedIn表单不会隐藏自身。从它的外观来看,它会跳过它,只是为了mainform.Show();
这是一个错误还是我需要做其他事情?
答案 0 :(得分:0)
行LoggedIn loggedinform = new LoggedIn()
将创建该登录窗口的新实例。如果您打算显示5"登录"那么这可能很有用。窗口在屏幕上一下子。我想你想要做的是检索已经显示的登录窗口的引用,并隐藏它;所以,避免创建一个新的。
正确地将引用传递给程序周围的现有对象是一种结构性问题,而且在我早期的编程时代遇到了很多问题。快速,不干净且通常不推荐的方法是将这些单个对象的实例(例如,可能是您的登录窗口)声明为static
,以便可以在任何地方检索它们。但是,要以最好的方式完全回答你的问题,也许你可以更多地描述你的程序的结构(完整的代码是不必要的,只是一般来说,类之间的流程是什么)
答案 1 :(得分:0)
好的我明白了。我可以用
Application.OpenForms[1].Hide();
[1]是我试图隐藏的形式。它起作用了。
我也感谢Katana说它为什么不起作用是有道理的,因为它基本上是在制作表格的新实例而不是找到当前的形式。对不起,我的代码很乱。