vb.net - 在 VB.NET 中切换 TopMost

标签 vb.net winforms topmost

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

最佳答案

应该没有问题。以下代码(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/

相关文章:

c# - 在 XBAP 应用程序中包含外部文件

c# - 在单个解决方案中混合 VB ASP.NET 和 C# ASP.MVC 项目

.net - strings.formatnumber 限制为 15 个字符?

c# - 如何使一种形式保持在另一种形式之上?

c# - 线程中的 TopMost 表单?

vb.net - 如何使用 Visual Basic .NET 从网站下载 PDF 并将其存储在 %appdata% 中

c# - 为什么调度程序 BeginInvoke 在 C# Windows 窗体应用程序中 Control BeginInvoke 成功的地方失败?

winforms - 如何以编程方式滚动 winforms datagridview 控件?

c++ - 将窗口设置为最顶层

c++ - 如何设置任何最顶层窗口的窗口顶部?