【问题标题】:When Form1 loads, hide it and show Form2当 Form1 加载时,隐藏它并显示 Form2
【发布时间】:2016-09-01 12:51:00
【问题描述】:

在这里阅读类似的帖子被困了很长时间,我确实找到了解决方案,但它是在虚拟代码中,我只是不知道我做错了什么。

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

代码如下所示。

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

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

我做错了什么?主窗体不应该隐藏吗?

【问题讨论】:

    标签: c# forms hide


    【解决方案1】:

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

    你有两个选择:

    【讨论】:

    • 或者,您可以将处理程序添加到 HandleCreated 事件。
    • 是的,那更好。 @BarryO'Kane 没想到那个。
    【解决方案2】:

    您可以在所有者财产的帮助下做到这一点,这是工作示例

    主窗体

    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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多