我试图在代码中应用公式。但是这个公式不会起作用,除非我改变TrackBar的起始刻度(不改变我的最小刻度值)。
例如:
TRmin = 1
Trmax = 10
而不是从1
开始我需要从2
或3
开始
答案 0 :(得分:1)
您可以使用TrackBar.Scroll event来限制值:
Option Strict On
Option Infer On
' ...
Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
Dim tb = DirectCast(sender, TrackBar)
tb.Value = Math.Max(3, tb.Value)
lbTrackBar1Value.Text = tb.Value.ToString()
lbResult.Text = Calc(tb.Value).ToString()
End Sub
假设您有标签来显示轨迹栏值和某些函数Calc
的结果。
我使用Dim tb = DirectCast(sender, TrackBar)
因此更容易概括用于其他跟踪栏的方法。
或者您可以使用TrackBar.ValueChanged Event,其功能是,如果以编程方式设置值,它也会被引发,因为Visual Vincent非常友好地指出。
如果在Scroll或ValueChanged事件中有时多次调用处理程序很重要,那么您可以防止多次运行代码:
Sub TrackBar1_ValueChanged(sender As Object, e As EventArgs) Handles TrackBar1.ValueChanged
Static inVC As Boolean = False
If inVC Then Return
Dim tb = DirectCast(sender, TrackBar)
inVC = True
tb.Value = Math.Max(3, tb.Value)
inVC = False
End Sub
本地static variable inVC
只初始化一次,并在调用之间保留其值。