我有一个vb.net表单。 我使用以下教程为我的表单添加阴影和移动/调整大小功能。
Metro-UI-Zune-like-Interface-form
它工作正常,但我的问题是,每当我的表单调整大小时,我都希望 它应该保留在屏幕的中央(或者,如果我从底部调整大小,它会从顶部和底部调整大小两半)。
我用过这个:
Private Sub Form1_SizeChanged(sender As Object, e As EventArgs) Handles Me.SizeChanged
Top = (Screen.PrimaryScreen.WorkingArea.Height - Height) / 2
Left = (Screen.PrimaryScreen.WorkingArea.Width - Width) / 2
End Sub
但每当我调整大小时,在调整大小后,表单移动到鼠标指针的位置。 鼠标指针位于窗体窗口之外,因为它在两个相反的方向上调整了一半。
它会导致闪烁并改变表单的位置。
我是如何顺利实现这一点的?提前谢谢。
答案 0 :(得分:1)
声明2个变量以保持桌面屏幕分辨率
Dim dx,dy As Integer
在表单加载时获取屏幕分辨率,它们在dx& DY
dx = My.Computer.Screen.Bounds.Width dy = My.Computer.Screen.Bounds.Height
最后,在resize事件上执行以下操作
Private Sub Form1_ResizeEnd(sender as Object,e As EventArgs)处理MyBase.ResizeEnd
Dim x, y As Integer
x = Me.Width / 2
y = Me.Height / 2
Me.Location = New Point(dx / 2 - x, dy / 2 - y)
End Sub
答案 1 :(得分:-1)
您可以使用Form.CenterToScreen()
方法:
Private Sub Form1_SizeChanged(sender As Object, e As EventArgs) Handles Me.SizeChanged
Me.CenterToScreen()
End Sub
是的,我知道文章说它不打算从您的代码中使用,但我已经看到其他专业程序员使用它没有问题。 :)