Visual Basic .Net,将窗口保持在其他顶部窗口之上

时间:2017-11-23 10:59:08

标签: vb.net taskbar always-on-top

我创建了一个我想在任务栏中一直显示的程序。当我按下按钮时,它会启动一些键盘快捷键。该程序运行良好,但Windows任务栏需要设置为始终在顶部或程序将最大化它。

如果我将我的程序和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

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

所以我的问题如下:有没有办法可以与任务栏交互,所以我的程序总是在它上面,无论其他什么,或者是否可以定期恢复顶部状态,以便我的程序变为在没有专注于我的程序的情况下再次登录任务栏?

如果任务栏和单击任务栏不会暂时使我的程序不可见,我更喜欢我的程序始终在ontop上。例如,如果我可以将应用程序的z顺序设置为比任务栏更高的级别,那将是最好的。否则,我可以以某种方式将我的程序作为任务栏的一部分生成,这也可以。

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

PS2:这只适合我,不用担心有不同偏好的人。我的目标是优化我的工作流程,因此我每天工作的时间越少越好。

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

那么......即使我点击任务栏中的某个位置,我怎样才能确保我的程序保持在任务栏的顶部?

1 个答案:

答案 0 :(得分:0)

显然解决方案非常简单。

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

我添加了一个计时器,启用了它,并且它只是执行每个滴答:

me.Topmost = true

如果我现在单击任务栏,程序显然会被推到后面,但是当计时器打到时,每100毫秒,程序会自动重新打开,而应用程序实际上无法获得焦点。