当窗体缩小后想要用滚动条滚动来显示其它控件,查到可以用这样的语句: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'属性在运行时不可读,请问这个该怎么改了?
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'属性在运行时不可读,请问这个该怎么改了?
这句出的问题在哪里?为什么不能遍历所有控件?
If c.Name <> "VScroll1" And c.Name <> "HScroll1" Then c.Top = c.Top - VScroll1.Value
这句就不能遍历全部控件了,没搞清楚这句出的问题在哪里.求教.
If c.Name <> "VScroll1" And c.Name <> "HScroll1" c.Name <> "Timer1" Then c.Top = c.Top - VScroll1.Value
追问一句,我向上移动了控件,怎么才能将控件移动下来呢?For Each c In Form1.Controls
If TypeOf c Is Frame Then
c.Top = c.Top - VScroll1.Value
End If
Next
将max设为500将min设为-500后要点两次控件才会下移,对这个不熟很迷惑.
在窗体上新增一个 PictureBox(假定命名为 Picture1)。
将 VScroll1 以外的需要被滚动的控件全都移入 Picture1 内(框选,Ctrl+X,选中 Picture1,Ctrl+V)。
调整控件布局。
Picture1 调整大小,设置 BorderStyle = 0 - None
Option ExplicitPrivate Sub Form_Load()
Picture1.Move 0, 0
With VScroll1
.Min = 0
.SmallChange = 120
End With
End SubPrivate 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 SubPrivate Sub VScroll1_Change()
Picture1.Top = -VScroll1.Value
End Sub
没看懂你在说什么?
Private Sub VScroll1_Change()
Picture1.Top = -VScroll1.Value
End Sub
假如 VScroll1 的范围是 0~100
那么 Picture1.Top 的范围就是 0~-100
VScroll1.LargeChange = 10
VScroll1.Max=100
按Max来计算,VScroll1查看Frame.Top的值分别是:
4800 4700 4500 4200 3800 3300
相差值: 100 200 300 400 500 总差值=500+400+300+200+100=1500
我的理解它应按 4600 4500 4400 4300 4200 4100 也就是总差值应该是
总次数*Max=100+100+100+100+100=500,但显然不是这样的,我的理解哪里错了吗?
按LargeChange来计算,VScroll1查看Frame.Top的值分别是:
4910 4890 4860 4820 4770
相差值: 20 30 40 50 总差值=20+30+40+50=140
这样越往后移动的距离越大,怎么才能实习均匀移动相同数值呢?