我正在编写一个在我们公司内部使用的程序,并且遇到了以下问题:
当使用 MDI 父最大化窗体作为背景时,如何让子窗体在屏幕上居中
在 MDI 子屏幕中,创建一个 Form_Initialize 函数,如下所示:
Private Sub Form_Initialize()
Me.Left = (MDIForm1.ScaleWidth - Me.Width) / 2
Me.Top = (MDIForm1.ScaleHeight - Me.Height) / 2
End Sub
当然,您需要在上面代码中看到 MDIForm1 的地方替换您的 MDI 表单的名称。
来自 Microsoft:“MDI 子窗体的初始大小和位置由 Microsoft Windows 操作环境控制,除非您在 Load 事件过程中专门设置它们。”
来自家长:
Private Sub MDIForm_Load()
CenterChildForm MDIForm1, Form1
End Sub
Sub CenterChildForm(Parent As Form, Child As Form)
If Parent.WindowState = 1 Then Exit Sub 'The Parent is minimized, centering is invalid.
Child.Top = (Parent.ScaleHeight - Child.Height) / 2
Child.Left = (Parent.ScaleWidth - Child.Width) / 2
End Sub
来自孩子:
Private Sub Form_Load()
Me.Left = (MDIForm1.ScaleWidth - Me.Width) / 2
Me.Top = (MDIForm1.ScaleHeight - Me.Height) / 2
End Sub
从 IDE 右下角的属性中选择 WINDOWS PROPERTY - CENTER PARENT。它的名称可能略有不同,但在 CENTER SCREEN 的下拉列表中
编辑:我认为这是 WINDOWS 位置 - 中心父
作为上述的补充,使用 me.Move [left], [top], [width], [height] 方法
它更快并且在单个动作中执行定位。