C#:从单独的表单中关闭并打开两个表单

时间:2013-08-12 20:53:45

标签: c# forms hide show

我有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();

这是一个错误还是我需要做其他事情?

2 个答案:

答案 0 :(得分:0)

LoggedIn loggedinform = new LoggedIn()将创建该登录窗口的新实例。如果您打算显示5"登录"那么这可能很有用。窗口在屏幕上一下子。我想你想要做的是检索已经显示的登录窗口的引用,并隐藏它;所以,避免创建一个新的。

正确地将引用传递给程序周围的现有对象是一种结构性问题,而且在我早期的编程时代遇到了很多问题。快速,不干净且通常不推荐的方法是将这些单个对象的实例(例如,可能是您的登录窗口)声明为static,以便可以在任何地方检索它们。但是,要以最好的方式完全回答你的问题,也许你可以更多地描述你的程序的结构(完整的代码是不必要的,只是一般来说,类之间的流程是什么)

答案 1 :(得分:0)

好的我明白了。我可以用

        Application.OpenForms[1].Hide();

[1]是我试图隐藏的形式。它起作用了。

我也感谢Katana说它为什么不起作用是有道理的,因为它基本上是在制作表格的新实例而不是找到当前的形式。对不起,我的代码很乱。