如何从TrackBar中的第二个或第三个刻度开始?

时间:2016-07-05 19:19:39

标签: vb.net

我试图在代码中应用公式。但是这个公式不会起作用,除非我改变TrackBar的起始刻度(不改变我的最小刻度值)。

例如:

TRmin = 1 
Trmax = 10 

而不是从1开始我需要从23开始

1 个答案:

答案 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只初始化一次,并在调用之间保留其值。