【问题标题】:how to load a form into another form as child from an event of a third form?如何从第三种表单的事件中将表单加载到另一个表单中?
【发布时间】:2015-11-16 18:33:16
【问题描述】:

希望我能尽可能清楚地说明这一点

我有 3 种形式:frmMainfrmLoginfrmDashboard

当应用程序打开时,frmMain 作为 mdiParent 打开,frmLogin 作为 mdiChild。用户输入正确的凭据后,frmLogin 将隐藏,frmDashboard 作为frmMain 的子项打开。

问题是我似乎无法让 frmMain 成为 frmDashboard 的父级,因为它是从 frmLogin 打开的

frmLogin登录按钮点击代码如下:

if (account_exist == true)
{
   MessageBox.Show("Welcome back ");
   frmDashboard f = new frmDashboard();
   f.Show();
   this.Hide();
}

谁能帮我用最好的方法来完成这个?

【问题讨论】:

  • frmLogin.Parent = frmDashboard; 不起作用(显然用变量名替换类型名)?
  • 如果没有可靠地重现问题的a good, minimal, complete code example,就无法确定导致问题的原因。请改进您的问题,使其包含一个好的代码示例。另外,请准确地说明代码的作用以及它与您想要或期望的有何不同。
  • 除了 Hans 所说的,MDI 总体上越来越被视为“糟糕的 UI”,并且对 MDI 的支持正在减弱(在这一点上更像是遗留而不是其他任何东西),我如果可以的话,我会尽量避免 MDI。
  • 我正在完成一项学校作业,而 MDI 是老师教的内容,也是教学大纲中的内容。感谢@PeterDuniho 和其他人帮助我改进这个问题,而不是仅仅投反对票,如果还有什么我应该添加的,请告诉我。
  • @Kefash 抱歉,应该是f.MdiParent = this.MdiParent。见msdn.microsoft.com/en-us/library/…

标签: c# forms winforms


【解决方案1】:

谁能帮我用最好的方法来完成这个?

最好且唯一正确的方法是separating concerns

您的登录表单除了登录之外不负责做任何事情,并且应该通知主表单登录过程完成。一旦发生这种情况,主表单应该显示与登录后阶段相关的任何 UI 元素。

【讨论】:

  • 我将如何指示主窗体执行此操作?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 2018-10-29
  • 2011-08-26
相关资源
最近更新 更多