VB窗体控件自动适应窗体大小

网上有好多这样的话题,可是都不是很好用,效果也不是很好,谁有好的代码,分享一下!谢谢!... 网上有好多这样的话题,可是都不是很好用,效果也不是很好,谁有好的代码,分享一下!谢谢! 展开
 我来答
粉影魔醉0k
推荐于2017-10-06 · 超过36用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:88.5万
展开全部
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) 用代码添加进去的时候 增减 变量内容 ,这个我也没做过 呵呵
甫温纶0gH698
2013-12-22 · TA获得超过363个赞
知道小有建树答主
回答量:354
采纳率:100%
帮助的人:325万
展开全部
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这四个属性


网上有些代码是一次性改变所有控件,连按钮都跟着变大,很坑爹,最好自己手动修改


本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
销声匿迹JIE
2013-12-22 · TA获得超过387个赞
知道小有建树答主
回答量:502
采纳率:0%
帮助的人:364万
展开全部
 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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式