【问题标题】:How to bring a win form to front?如何将胜利形式带到前面?
【发布时间】:2014-12-02 13:32:45
【问题描述】:

我有一个让我发疯的winform... 当我打开它时,它会打开并在我打开它的主窗体后面。 我试过打电话:BringToFront()、Focus()、Activacte() 还是什么都没有…… 这是我的代码:

MyForm frm = new MyForm();
frm.WindowState = FormWindowState.Maximized;
frm.StartPosition = FormStartPosition.CenterParent;
frm.Show();
frm.BringToFront();
frm.Activate();

我知道主窗体的 TopMost 属性设置为 true,但我也有这段代码可以正常工作:

Form frmLog = new Form();
LogViewer logControl = new LogViewer();
frmLog.Controls.Add(logControl);
logControl.Dock = DockStyle.Fill;
frmLog.WindowState = FormWindowState.Maximized;
frmLog.StartPosition = FormStartPosition.CenterParent;
frmLog.Text = "Log Viewer";
frmLog.Show();

这就是它让我发疯的方式......

【问题讨论】:

  • 确保您的父表单的 TopMost 属性未设置为 true。
  • 它设置为 true,但我仍然有一个用户控件,我将其加载到我创建的新表单中,它可以像这样打开:Form frmLog = new Form(); LogViewer logControl = new LogViewer(); frmLog.Controls.Add(logControl); logControl.Dock = DockStyle.Fill; frmLog.WindowState = FormWindowState.Maximized; frmLog.StartPosition = FormStartPosition.CenterParent; frmLog.Show();

标签: c# winforms


【解决方案1】:

您必须将主表单的实例传递给您要显示的表单的Show 方法。

MyForm frm = new MyForm();
frm.Show(this);

当然,如果您在主表单类中实例化第二个表单,这将有效(因此您可以使用 this 关键字。

【讨论】:

    【解决方案2】:

    您必须使用Form.Show(IWin32Window) 方法将主表单设置为frm 的所有者。

    所以你的代码应该是这样的

    frm.Show(this);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多