我有一个在系统托盘中静默运行的应用程序。有时,我需要它向最终用户弹出一个小通知表。
我试图用一个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;
}
答案 0 :(得分:-1)
在进入某些断点之后,我意识到只要在childForm正确初始化并显示之后设置了该属性,childForm就会是TopMost。我可以通过在Shown事件中设置TopMost命令来强制执行此操作:
private void ChildForm_Shown(object sender, System.EventArgs e)
{
this.TopMost = true;
}