VB窗体控件自动适应窗体大小
展开全部
Dim f_size(1) As Long, fist_re As Boolean '用来存放窗体默认大小 以及 是否第一次初始化,全局变量,可在 模块中public声明
Private Sub Form_Resize()
If Me.WindowState <> 1 Then '必须排除最小化的状态
If fist_re = False Then '窗体初始化只记录窗体大小
f_size(0) = Me.Height: f_size(1) = Me.Width
fist_re = True
Else '否则开始适应屏幕变化
For Each a In Form1.Controls
On Error Resume Next
a.Width = a.Width * (Me.Width / f_size(1))
a.Height = a.Height * (Me.Height / f_size(0))
a.Top = a.Top * (Me.Height / f_size(0))
a.Left = a.Left * (Me.Width / f_size(1))
Next
f_size(0) = Me.Height: f_size(1) = Me.Width '重新记录窗口大小,用于下次运算
End If
End If
End Sub
''对于一些控件 如listbox的高度不适宜 呵呵
追问
怎样才能更完美?
追答
合理设置一个全局 变量保存 控件名和 原始位置 按比例缩放 会更高, 不过 要在 控件组发生变化的时候(比如 command1(10) 用代码添加进去的时候 增减 变量内容 ,这个我也没做过 呵呵
展开全部
Private Sub Form_Load()
Me.ScaleMode = 3
End Sub
Private Sub Form_Resize()
On Error Resume Next
' 使Text1锁定4个边界
Text1.Top = 10
Text1.Left = 10
Text1.Width = Me.ScaleWidth - Text1.Left - 10
Text1.Height = Me.ScaleHeight - Text1.Top - 40
' 使Command1锁定在Text1的右下角
Command1.Top = Text1.Top + Text1.Height + 10
Command1.Left = Text1.Left + Text1.Width - Command1.Width - 10
' 使Command2锁定在Command1的左边
Command2.Top = Command1.Top
Command2.Left = Command1.Left - Command2.Width - 20
End Sub
我个人的方法是让控件以窗体或旁边的控件为参照物而改变X、Y、W、H这四个属性
网上有些代码是一次性改变所有控件,连按钮都跟着变大,很坑爹,最好自己手动修改
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Form_Load() 'picture1控件为例
Picture1.BackColor = vbRed
Picture1.Move 0, 0, Form1.Width, Form1.Height
End Sub
Private Sub Form_Resize()
Picture1.Move 0, 0, Form1.Width, Form1.Height
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询