即使在隐藏ParentForm时,也会在顶部显示ChildForm

时间:2013-09-09 19:06:45

标签: winforms topmost

我有一个在系统托盘中静默运行的应用程序。有时,我需要它向最终用户弹出一个小通知表。

我试图用一个WinForms应用程序完成这个任务,该应用程序的大部分逻辑内置在一个隐藏的表单中,而这个表单并没有显示给用户。然后,当满足某些条件时,我会向用户显示辅助表单。

我的问题是,即使我设置TopMost = true,这个辅助表单并不总是在顶部。

我认为这是因为主窗体没有显示,所以它的子窗体不能利用TopMost = true。我已经尝试将TopMost移动到几个不同的地方。还有其他想法吗?

MainForm逻辑:

ChildForm childForm = new ChildForm(this);

int x = (Screen.PrimaryScreen.Bounds.Width / 2) - (childForm.Width / 2);
childForm.StartPosition = FormStartPosition.Manual;
childForm.Location = new Point(x, 0);
childForm.ShowDialog();
//childForm.TopMost = true;

ChildForm逻辑:

public ChildForm(MainForm mainForm)
{
    InitializeComponent();
    //this.TopMost = true;
}

1 个答案:

答案 0 :(得分:-1)

在进入某些断点之后,我意识到只要在childForm正确初始化并显示之后设置了该属性,childForm就会是TopMost。我可以通过在Shown事件中设置TopMost命令来强制执行此操作:

private void ChildForm_Shown(object sender, System.EventArgs e)
{
    this.TopMost = true;
}