【问题标题】:how can i hide my second form dialog whilst not closing my first form?如何隐藏我的第二个表单对话框而不关闭我的第一个表单?
【发布时间】:2014-01-23 02:20:14
【问题描述】:

我正在使用 Visual Studio 2012。我创建了两个表单,表单 1 带有一个打开表单 2 的按钮,表单 2 有一个“退出”按钮,它将带我回到表单 1。

这是表格 1 中的代码:

private void btnRecords_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2();
    frm2.ShowDialog();
    this.Hide();
}

从形式 2:

 private void btnExit_Click(object sender, EventArgs e)
        {
            this.Hide();
        }

我知道我可以使用frm2.Show(); this.Hide(); 代替frm2.showdialog();。但是,我需要保持表格 1 的状态不变。我的 form1 包含一个登录表单,只有登录正确时才会启用按钮(例如新表单按钮)。因此,如果我隐藏 form1 并再次显示它,登录会重置;

【问题讨论】:

  • 因为我的登录屏幕和我的主菜单按钮在同一页上@GrantWinney fbcdn-sphotos-f-a.akamaihd.net/hphotos-ak-frc1/t1/…
  • 你必须创建一个包含你所有作品的主表单,子表单包含登录表单。因此,您可以随时随地从 main-from 调用子表单。
  • @Louis.CLast 抱歉,我对这个概念有点模糊。我只是有不同的表格,表格1,表格2,表格3。我必须将一个设置为主要,其他设置为子吗?与只有多种形式不同吗?

标签: c# winforms forms visual-studio-2012 login


【解决方案1】:

Form2 类上添加一个属性来存储对父表单的引用:

public Form ParentForm { get; set; }

然后在Form1上,可以这样显示Form2,同时隐藏Form1

private void btnRecords_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2();
    frm2.ParentForm = this;
    this.Hide();
    frm2.ShowDialog();
}

关闭Form2时,可以再次显示Form1

private void btnExit_Click(object sender, EventArgs e)
{
    this.ParentForm.Show();
    this.Close();
}

或者更好的是,这样关闭Form2

private void btnExit_Click(object sender, EventArgs e)
{
    this.Close();
}

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
    if (this.ParentForm != null)
        this.ParentForm.Show();
}

如果我们用户使用标题栏中的十字按钮关闭Form2,这也会显示Form1

【讨论】:

    【解决方案2】:

    为什么不在主窗体的form_load事件中处理登录。每次表单重新获得焦点时,form_load 都不会运行。如果他们没有在加载时登录,是否适合关闭他们的表单?就我而言,我向域管理员发送了一封带有 windows 用户用户名的电子邮件并关闭了程序。他们必须重新打开程序才能再试一次。

        private void frmMain_Load(object sender, EventArgs e)
        {
            //Check login
            Form frmLogin = new Form();
            frmLogin.ShowDialog();
            if (frmLogin.LoginSucessful == true)
            {
                btnRecords.Enabled = true;
                lblWarning.Visible = false;
            }
            else
            {
                btnRecords.Enabled = false;
                lblWarning.Visible = true;
                lblWarning.Text = "You must first Login";
            }
            //other setup code here
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-09
      • 2013-07-27
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多