2

我有一个表格,必须在上面一段时间,然后可以正常设置在其他窗口后面。除了设置之外还有什么Me.TopMost需要TrueFalse的吗?我问是因为它似乎不起作用。

4

1 回答 1

4

它应该没有问题。以下代码(C#,抱歉,我现在没有可用的 VB.NET 环境)设置TopMosttrue,等待 5 秒,然后切换TopMostfalse.

private void MakeMeTopmostForAWhile()
{
    this.TopMost = true;
    ThreadPool.QueueUserWorkItem(state =>
    {
        Thread.Sleep(5000);
        this.Invoke((Action)delegate { this.TopMost = false; });
    });
}

请注意,这不会立即影响窗口的 Z 顺序;当TopMost设置为时false,窗口仍将位于其他窗口之上。如果该窗口位于另一个也是最顶层的窗口的顶部,它将移动以使另一个最顶层的窗口不被覆盖,但它将保持在其他非最顶层窗口的顶部。

更新
这是 VB.NET 中的上述代码(自动转换,未经测试):

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
于 2009-11-11T15:47:15.720 回答