我正在开发一种主要停靠在系统托盘中的工具。但是,如果单击该图标,则会打开表单以显示表单上显示的更多选项。 (不是上下文菜单)但是,我想将表单直接放在系统托盘上方,并且不知道如何执行此操作。此应用程序将在具有不同屏幕分辨率的多台用户计算机上运行,因此对预设坐标进行硬编码不是一种可行的解决方案。
我确实搜索了系统托盘的FindWindow(),但在Google / Bing中找不到任何有用的东西。
答案 0 :(得分:0)
有Screen.WorkingArea属性可让您获得主屏幕"可用分辨率"。
只需将您的窗口放在working area height - window height
左侧,窗口放在working area width - window width
左侧(如有必要,请进行调整以获得一点余量)。
更新:此外,还要考虑任务栏的位置和大小:How do I get the taskbar's position and size?
答案 1 :(得分:0)
你可以用这个:
首先设置形式TopMost
MyForm.TopMost = True
要在右侧的任务栏顶部显示表单,请举例如下:
Private Sub SetFormPosition()
Dim leftpos As Long
Dim toppos As Long
leftpos = (My.Computer.Screen.WorkingArea.Right - 2) - Me.Width
toppos = (My.Computer.Screen.WorkingArea.Bottom - 2) - Me.Height
Me.Location = New Point(leftpos, toppos)
End Sub
您可以玩游戏并更改值。 (-2)接近边缘,如果你输入更大的数字,你将远离边缘,依此类推。您还可以更改要显示表单的My.Computer.Screen.WorkingArea
。
您可以使用 NotifyIcon_MouseClick 事件
上的代码 Private Sub NotifyIcon_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon.MouseClick
If e.Button = Windows.Forms.MouseButtons.Left Then
SetFormPosition()
MyForm.Show()
End If
End Sub