【问题标题】:Hiding a child form close it instead and return me to the owner c#隐藏子窗体改为关闭它并将我返回给所有者 c#
【发布时间】:2017-05-02 09:17:09
【问题描述】:

我有一个登录表单,在验证用户后,我使用以下代码调用主表单:

frmMain frm = new frmMain();
Hide()
frm.ShowDialog();
Show();

问题是当我尝试使用 Hide() 或 Visible = false 隐藏主窗体以将应用程序最小化到托盘栏时,主窗体被关闭并且应用程序将我返回到登录窗体,就像我按下关闭按钮。

Hide()Show() 如何工作?它会创建另一个实例吗?

【问题讨论】:

  • 您可以先显示登录表单:formLogin.ShowDialog();,然后再显示mainForm.ShowDialog();,而不是玩弄可见性。否则你的问题是不完整的:你如何将应用程序最小化到托盘栏,你如何恢复,会发生什么以及你期望发生什么?描述 “主窗体关闭,应用程序将我返回到登录窗体,就像我按下关闭按钮一样” 没有清楚地解释问题。
  • 隐藏对话框将始终关闭它。您必须改用 Show()。考虑使用主窗体的 FormClosing 事件使其再次可见。

标签: c# forms winforms


【解决方案1】:

当模态窗体被隐藏时,它会返回到调用代码。这就是来龙去脉。我要做的是更改代码以在显示主表单后关闭登录表单:

frmMain frm = new frmMain();
frm.Show();
Close()

如果您想在主窗体关闭时再次显示登录窗体,您可以使用FormClosing 事件,如下所示:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    frmLogin frmlogin= new frmLogin();
    frmlogin.Show();
}

或者在开始时调用主窗体,然后从它调用登录窗体作为对话框。

【讨论】:

    【解决方案2】:

    制作两个窗体,1:- Login(默认打开),2:- Main(登录成功打开)

    1:- 第一个登录窗口将打开 2:-成功登录后关闭/隐藏登录表单并打开/显示主表单,该表单也将是窗口。 3:- 以同样的方式处理任务栏显示属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      相关资源
      最近更新 更多