很多次设置这个 TopMost 属性会莫名的不起作用,有时又可以。一直在想是为什么会这样?
后来多次尝试,发现这个属性必须在窗体某些其他属性后设置,比如在 Height、Width 这样的属性后。
看了下 Windows 窗体应用程序启动时,主窗体的启动事件将按照以下顺序引发:
Control.HandleCreated
Control.BindingContextChanged
Form.Load
Control.VisibleChanged
Form.Activated
Form.Shown
所以在最后一个事件 Shown 里设置这个 TopMost 应该是最可靠的:
private void Form1_Shown(object sender, EventArgs e)
{
this.TopMost = true;}
注意:如果悬浮这个窗体是主窗体,还有要 Show 的子窗体,会出现子窗体被盖住的情况:
所以在 Show 出子窗体前,需要设置一下:
...
this.TopMost = false;
// 关闭子窗体后再设置 TopMost
this.TopMost = true;