代码之家  ›  专栏  ›  技术社区  ›  LPChip

Visual Basic。Net,使窗口位于其他顶部窗口的顶部

  •  0
  • LPChip  · 技术社区  · 8 年前

    如果我的程序和windows任务栏都设置为始终位于顶部,则我的程序位于任务栏顶部,直到我单击任务栏中的任何位置,例如激活另一个程序。

    我的代码如下:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles MyBase.Load
    
        Me.Bounds = Screen.PrimaryScreen.Bounds
        Me.TopMost = True
    
        '...
    End Sub
    

    我曾考虑过偶尔使用计时器来激活我的程序,但这种方法的缺点是,如果我在另一个应用程序中键入内容,而焦点转移到我的程序上,这非常烦人。

    因此,我的问题如下:有没有一种方法可以与任务栏交互,使我的程序始终处于任务栏的顶部,而不管其他任何事情,或者可以定期恢复顶部状态,使我的程序再次位于任务栏的顶部,而无需将焦点转移到我的程序?

    我希望我的程序总是在任务栏上,单击任务栏不会暂时使我的程序不可见。例如,如果我可以将应用程序的z顺序设置为比任务栏更高的级别,那就最好了。如果不是这样,我可以将我的程序作为任务栏的一部分,那也可以。

    PS:我已经启用了任务栏中的搜索栏,我的程序应该会完全覆盖它。我不使用搜索栏,它给了我一个专用的空间,不用担心覆盖任何开放的程序。

    PS2:这只是给我的,不需要担心有不同偏好的人。我的目标是优化我的工作流程,所以每天抓紧的时间越少越好。

    这是应用程序运行时的样子,但单击任务栏会使窗口不可见 enter image description here

    所以即使单击任务栏上的某个位置,我如何确保我的程序保持在任务栏的顶部?

    1 回复  |  直到 8 年前
        1
  •  0
  •   LPChip    8 年前

    显然,解决方案相当简单。

    我担心副作用,但我应用的解决方案效果很好。

    我添加了一个计时器,启用了它,它的每一个滴答声都会简单地执行:

    me.Topmost = true
    

    如果我现在单击任务栏,程序显然会被推到后面,但每100毫秒,当计时器滴答作响时,程序就会自动放回顶部,而应用程序实际上不会收到焦点。