【问题标题】:C# - Don't bring form to frontC# - 不要把表单放在前面
【发布时间】:2016-06-18 09:19:55
【问题描述】:

我的应用程序使用了一个计时器,它会在几秒钟后显示一个表单。 当我最小化我的应用程序以执行其他操作时,计时器仍然处于活动状态(我对此表示满意),并且表单将焦点放在我的所有窗口上(正常行为)。

我希望新表单在我的主要应用程序上方打开,而不是在我的所有窗口上方。

在主窗体中,我这样称呼新窗体:

MRIS.EVENT_BOX form1 = new MRIS.EVENT_BOX();
form1.Owner = this;
form1.ShowDialog();

我设法通过在 EVENT_BOX 中添加它来消除焦点问题:

protected override bool ShowWithoutActivation { get { return true; } }

我还检查了 TopMost 在新表单中是否设置为 false。

但是新的表格仍然显示在所有其他表格之上(这次没有重点......)。

我检查了一些其他问题,但找不到有用的东西。

有人谈可见形式?

如果你能帮助我?

谢谢

【问题讨论】:

  • 显示为对话框 (ShowDialog) 意味着表单将显示在原始表单的“顶部”——特别是,必须关闭新表单才能再次使用原始表单.它旨在用于对话框。如果您只是想显示另一个表单,那么Show 就是您想要的方法,如@Leopard 所示。
  • 从你的问题中不完全清楚你想要在计时器滴答时发生什么......是“主要应用程序”其他打开的不相关应用程序和“我的所有窗口”你的 c# 中的其余窗口应用程序?当计时器计时,您希望哪个窗口位于顶部?
  • @Steve16351:“我的所有窗口”是指与我的应用程序无关的所有窗口。我想启动我的应用程序,切换到其他任何东西,例如浏览互联网并让我的应用程序显示一个表单,而不是在所有窗口的顶部显示它。然后,当完成浏览互联网时,我切换回我的应用程序并在我的主应用程序表单上方看到我的表单。

标签: c# forms


【解决方案1】:

如果你不想把它带到前面,你需要打电话给form1.Show();

form1.Show();
//form1.BringToFront() You may need to call this if you want to being it to front

form1.ShowDialog() 将表单显示为dialog,这意味着它将显示在parent form 的顶部。您可以在此here查看更多详细信息

【讨论】:

  • 嗨 Leopard,感谢您的回答,我的表单仍然显示在我所有窗口的顶部(与我的应用程序无关)但这次只显示表单而不执行与其相关的代码(如在您提供的链接中解释)。所以它确实解决了“问题”。
  • 对不起我的最后一句“所以它确实解决了“问题”。”,问题没有解决。
猜你喜欢
  • 2020-11-15
  • 1970-01-01
  • 2012-05-07
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 2013-03-23
相关资源
最近更新 更多