在网上搜索了一段时间,但没有找到我要找的东西。
也许有人可以帮助我。这是核心代码: http: //pastebin.com/qWEFrAuC
问问题
1361 次
3 回答
2
您可以循环浏览屏幕以在其边界内查找鼠标位置。
此示例将窗体居中放置在鼠标当前所在的屏幕上,如果您想在窗口移动期间保持位置,则需要您稍加努力。
要确定屏幕:
Dim scr As Screen =
Screen.AllScreens.Where(Function(x) x.Bounds.Contains(Control.MousePosition)).Single
要将表单在屏幕上居中:
CenterToScreen(Me, scr)
Public Shared Function CenterToScreen(ByVal f As Form, ByVal display As Screen) As Point
If (display Is Nothing) Then
display = Screen.PrimaryScreen
End If
Dim location As New Point With
{
.X = ((display.Bounds.Width - f.Bounds.Size.Width) \ 2),
.Y = ((display.Bounds.Height - f.Bounds.Size.Height) \ 2)
}
f.Location = location
Return location ' Return the new coordinates of the source Form.
End Function
注意:该函数是我的免费 API 的一部分:ElektroKit,您可以在其中获得更多有用的片段,例如与 Class 上的窗口定位相关的片段:
于 2016-03-20T03:44:40.267 回答
0
这会将您的表单放在鼠标指针所在的屏幕中央。
Private Sub CenterToCurrentScreen()
Dim CurrentScreen As Screen = Screen.FromPoint(Cursor.Position)
Me.Location = New Point( _
(CurrentScreen.Bounds.Width / 2) - (Me.Width / 2), _
(CurrentScreen.Bounds.Height / 2) - (Me.Height / 2))
End Sub
例如:CenterToCurrentScreen()
当鼠标指针位于Screen 3上时调用会将您的表单置于Screen 3的中心。
Screen.FromPoint()
将为您提供指定坐标的屏幕,并Cursor.Position
为您提供鼠标指针的坐标。
于 2016-03-19T21:01:57.070 回答
0
更新!x2 - 图片框应随窗口形式移动。
据我所知,如果鼠标离开表单,它将变为对面的屏幕监视器(它对我有用,虽然我只有 2 个监视器)您拥有的监视器数量可能超过 2 个,但让我知道你怎么走。
Private Sub Form1_MouseLeave(sender As Object, e As EventArgs) Handles Me.MouseLeave
If Me.DesktopLocation = Screen.AllScreens(1).Bounds.Location Then
Me.DesktopLocation = Screen.AllScreens(0).Bounds.Location + New Point(100, 100)
PictureBox1.Location = New Point(Screen.AllScreens(0).Bounds.Location + New Point(100, 100))
Else
Me.DesktopLocation = Screen.AllScreens(1).Bounds.Location
End If
End Sub
于 2016-03-19T20:34:09.757 回答