首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

窗体加入滚动条后如何改变控件位置

2013-03-14 
窗体加入滚动条后怎么改变控件位置?当窗体缩小后想要用滚动条滚动来显示其它控件,查到可以用这样的语句:Pr

窗体加入滚动条后怎么改变控件位置?
当窗体缩小后想要用滚动条滚动来显示其它控件,查到可以用这样的语句:


Private Sub VScroll1_Change()
For Each c In Form1.Controls
    If c.Name <> "VScroll1" And c.Name <> "HScroll1" Then c.Top = c.Top - VScroll1.Value
Next
End Sub

但是运行后提示错误:'top'属性在运行时不可读,请问这个该怎么改了?
[解决办法]
搞复杂了。简单的方法是用一个 PictureBox 作滚动的容器:
在窗体上新增一个 PictureBox(假定命名为 Picture1)。
将 VScroll1 以外的需要被滚动的控件全都移入 Picture1 内(框选,Ctrl+X,选中 Picture1,Ctrl+V)。
调整控件布局。
Picture1 调整大小,设置 BorderStyle = 0 - None
Option Explicit

Private Sub Form_Load()
    Picture1.Move 0, 0
    With VScroll1
        .Min = 0
        .SmallChange = 120
    End With
End Sub

Private Sub Form_Resize()
    If Me.WindowState = vbMinimized Then Exit Sub
    
    On Error Resume Next
    With VScroll1
        .Move ScaleWidth - .Width, 0, .Width, ScaleHeight
        
        If ScaleHeight >= Picture1.Height Then
            .Max = 0
            .Value = 0
        Else
            .Max = Picture1.Height - ScaleHeight
            .SmallChange = 120
            .LargeChange = ScaleHeight
        End If
    End With
    On Error GoTo 0
End Sub

Private Sub VScroll1_Change()
    Picture1.Top = -VScroll1.Value
End Sub

热点排行