将形式从winform带到前面

时间:2014-07-18 20:47:36

标签: c# winforms

我打开了多个表单。现在说我有表格1,2和3是开放的。 1打开2和2打开3.现在当用户点击2时,此屏幕应该到达前面并将屏幕2发送到它的背面。同样,每当点击一个屏幕时,该屏幕应该显示在前面,前面显示的屏幕应该返回一个屏幕。

我在激活和停用的事件中尝试了各种各样的事情,但没有像以下那样工作:

protected override void OnDeactivate(EventArgs e)
{
  if (!closeEvent)
  {
    base.OnDeactivate(e);
    this.WindowState = FormWindowState.Minimized;
  }
}

protected override void OnActivated(EventArgs e)
{
  base.OnActivated(e);
  this.WindowState = FormWindowState.Normal;
  closeEvent = false;
}

对此的任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

我认为Control.BringToFront()应该有所帮助。如果我没记错,Form会继承Control

虽然我不确定我理解为什么它已经有这种行为。如果我没有误解,你想把用户点击的窗口带到前面,对吧? Windows不这样做吗?

答案 1 :(得分:0)

根据我在WinForms应用程序中使用的内容,我将使用以下内容:

this.Focus(); //We always focuss on it because it make on the top..

这一般适用于表单控件。请注意,如果存在模态窗口,则会影响此命令的结果。

激活类似于焦点,但不会将其置于顶部,但更多会将应用程序闪烁到任务栏,指示它处于活动状态。

如果有效,请告诉我。 :)

答案 2 :(得分:0)

要将winforms表格放到前面(最上面),您可以尝试下面的内容:

yourForm.Activate()

激活并重点关注。

请参阅此link

希望它有所帮助!