加载Form1时,隐藏它并显示Form2

时间:2016-05-06 12:32:22

标签: c# forms hide

在这里读了类似的帖子已经有一段时间了,我确实找到了一个解决方案但它是用虚拟代码而我不知道我做错了什么。

我有2个表单,当主表单加载时我想隐藏它并显示form2(登录表单)

代码看起来像这样。

private void Form1_Load(object sender, EventArgs e)
{
    login loginform = new login();
    loginform.Show();
    this.Hide();
}

但是当我运行程序时,两个表单都是打开的并且可见。

我做错了什么?不应该隐藏主要形式吗?

2 个答案:

答案 0 :(得分:1)

Hide方法对Load事件没有任何影响,因为尚未创建句柄。

您有两种选择:

答案 1 :(得分:0)

你可以在所有者财产的帮助下完成,这是工作示例

主要表单

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        var loginFormMax = new LoginFormMax { Owner = this };//save main form as owner inside child form
        loginFormMax.Show();
    }
}

儿童表格

public partial class LoginFormMax : Form
{
    public LoginFormMax()
    {
        InitializeComponent();
    }

    private void LoginFormMax_Shown(object sender, EventArgs e)
    {
        var owner = this.Owner;
        owner.Hide();//now you have control over owner form, just hide it
    }

    private void LoginFormMax_FormClosing(object sender, FormClosingEventArgs e)
    {
        var owner = this.Owner;
        owner.Show();//now you have control over owner form, just show it again
    }
}