改变窗体大小后如何让控件仍居中显示

2025-01-24 22:46:26
推荐回答(2个)
回答1:

不需要一直在死胡同裏走

可以换个思路考虑

现在你只是想让控件一直保持在程序的最中央是吧?

那就在ReSize事件裏 写上移动控件位置的代码就好了啊

举个例子

原来程序的窗体 高度300 x 宽度400
有一个按钮 大小是 高度30 x 宽度80
那要把这个按钮移动到中间 只需要
Private Sub Form_Resize()
Command1.Top = (Form1.ScaleHeight - Command1.Height) / 2
Command1.Left = (Form1.ScaleWidth - Command1.Width) / 2
End Sub

代码写成这样 是为了更好地显示原理
你可以先试下这段代码 看看是不是已经实现了你想要的功能?

代码还可以稍微简化下
Private Sub Form_Resize()
Command1.Move (Form1.ScaleWidth - Command1.Width) / 2, (Form1.ScaleHeight - Command1.Height) / 2
End Sub

还有你说的 在Frame或者其他容器中 也可以很容易的解决的
在Form_Resize()过程中 先把这个容器的大小修改到跟窗体一样的比例 就可以了

还是上面那个例子
现在添加一个Frame 然后把Command控件放进这个Frame裏
代码如下:
Private Sub Form_Resize()
Frame1.Left = 60
Frame1.Top = 30
Frame1.Width = Form1.ScaleWidth - 120
Frame1.Height = Form1.ScaleHeight - 120
Command1.Move (Frame1.Width - Command1.Width) / 2, (Frame1.Height - Command1.Height) / 2
End Sub

现在试试看是不是实现你的要求了

同样可以简化下:
Private Sub Form_Resize()
Frame1.Move 60, 30, Form1.ScaleWidth - 120, Form1.ScaleHeight - 120
Command1.Move (Frame1.Width - Command1.Width) / 2, (Frame1.Height - Command1.Height) / 2
End Sub

如果有很多个Frame的话 你自己Frame所占的窗体大小的比例 就可以了.

回答2:

把控件放到table里,设置水平对齐方式为center,垂直对其方式为middle即可。

我看错了,以为是web开发了。你所说的控件居中,我不明白什么意思。但有一点,我觉得vb里,并没提供像java那样的布局管理器,你所说的窗体变化,而控件的布局不变,实现起来很费事,大可不必在这上面费功夫,不如把最大化按钮给失效。