如何在将表单保持在屏幕中心的同时调整表单大小?

时间:2015-03-01 05:30:13

标签: vb.net window-resize

我有一个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

但每当我调整大小时,在调整大小后,表单移动到鼠标指针的位置。 鼠标指针位于窗体窗口之外,因为它在两个相反的方向上调整了一半。

它会导致闪烁并改变表单的位置。

我是如何顺利实现这一点的?提前谢谢。

2 个答案:

答案 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

了解详情:https://msdn.microsoft.com/en-us/library/system.windows.forms.form.centertoscreen(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1


是的,我知道文章说它不打算从您的代码中使用,但我已经看到其他专业程序员使用它没有问题。 :)