0

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

我尝试使用 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;
}
4

1 回答 1

-1

进入一些断点后,我意识到只要在 childForm 正确初始化并显示后设置该属性,childForm 就会是 TopMost。我可以通过在 Shown 事件中设置 TopMost 命令来强制它工作,如下所示:

private void ChildForm_Shown(object sender, System.EventArgs e)
{
    this.TopMost = true;
}
于 2013-09-12T12:09:26.513 回答