所以我有一个带有一些滑块的表单,以及一些禁用或启用每个滑块的相应复选框。当我禁用滑块时,我想将其值更改为0,但它拒绝合作并且不会更改该值。令人沮丧的是,只要我将值设置为0以外的值,它就会改变。
我已经调试了它,看了一个滑块的Value
属性更改值大于0,验证sliders
数组中的控件是否与我想要的控件相对应to,验证Min
属性为0,甚至将它改为荒谬的低数,因为它不具有包容性,所以我无法想象为什么它会表现出来方式。
它实际上并不是非常重要,因为滑块的值在被禁用时不会计算,但是它会让我感到害怕,所以我会这样做感谢对此的任何见解。
Private Sub UpdateSliderComponents(i As Integer)
Dim enable As Boolean
enable = Not daysOff(i).Value
If Not enable Then
sliders(i).Value = 0
End If
labels(i).Enabled = enable
sliders(i).Enabled = enable
End Sub
答案 0 :(得分:0)
我在这里尝试了一个简单的表格,试图复制你的案子。但它不一样,控制工作正常。
另请注意,Min和Max并不是您认为的0和100.它是值的范围。价值是另一种财产。我可以将Min设置为150,将Max设置为300.值150现在表示滑块的零点(0%),300表示在这种情况下所谓的100%。如果将Min设置为150,然后尝试将值设置为0,则会导致错误。 (运行时错误380,无法设置Value属性。无效的属性值。)
Option Explicit
Public Sub Respond(ByRef i As Integer)
Dim enable As Boolean
Select Case i
Case 0
enable = False
Case 1
enable = True
End Select
If Not enable Then
ScrollBar1.Value = 150 '--represents zero %
ScrollBar1.BackColor = &H8000000F
Else
ScrollBar1.Value = 250 '--represent some value in the range
ScrollBar1.BackColor = &H80FF80
End If
Debug.Print ScrollBar1.Value
ScrollBar1.Enabled = enable
End Sub
勾选并滑动到250(某个值):
取消并滑动到150(零):