我有一个表单,必须在顶部一段时间,然后才能正常设置在其他窗口后面。除了将 Me.TopMost
设置为 True
或 False
之外,还需要做什么吗?我问是因为它似乎不起作用。
最佳答案
应该没有问题。以下代码(C#,抱歉,我现在所在的位置没有可用的 VB.NET 环境)将 TopMost
设置为 true
,等待 5 秒,然后切换 TopMost
返回到 false
。
private void MakeMeTopmostForAWhile()
{
this.TopMost = true;
ThreadPool.QueueUserWorkItem(state =>
{
Thread.Sleep(5000);
this.Invoke((Action)delegate { this.TopMost = false; });
});
}
请注意,这不会立即影响窗口的 Z 顺序;当 TopMost
设置为 false
时,该窗口仍将位于其他窗口之上。如果该窗口位于另一个最顶层窗口的顶部,则它将移动,以便另一个最顶层窗口不被覆盖,但它将保留在其他非最顶层窗口的顶部。
更新
以下是 VB.NET 中的上述代码( auto-converted ,未测试):
Private Sub MakeMeTopmostForAWhile()
Me.TopMost = True
ThreadPool.QueueUserWorkItem(Function(state) Do
Thread.Sleep(5000)
Me.Invoke(DirectCast(Function() Do
Me.TopMost = False
End Function, Action))
End Function)
End Sub
关于vb.net - 在 VB.NET 中切换 TopMost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1715895/