.NET TrackBar MouseDown跟随光标?

时间:2013-07-01 21:34:54

标签: vb.net trackbar

我目前使用此代码来修复错误,如果您单击Horizo​​ntal TrackBar上的某个位置,它会跳转到TrackBar的中间位置。因此,此代码修复了该错误,该错误现在跳转到您单击的位置。

但是当我将鼠标按下并将其移动到TrackBar上时仍然存在一个问题,滑块应该跟随,但它只是重置到开始位置,如何让它跟在光标顶部?我需要一个计时器控件吗?

Private Sub tbTest_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles tbTest.MouseDown
    Dim dblValue As Double

    'Jump to the clicked location, bug FIX.
    dblValue = (Convert.ToDouble(e.X) / Convert.ToDouble(tbTest.Width)) * (tbTest.Maximum - tbTest.Minimum)
    tbTest.Value = Convert.ToInt32(dblValue)
End Sub

1 个答案:

答案 0 :(得分:1)

让方法处理这两个 MouseDown()和MouseMove()事件如下:

Private Sub tbTest_MovePointer(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles tbTest.MouseDown, tbTest.MouseMove
    If e.Button = Windows.Forms.MouseButtons.Left Then
        Dim dblValue As Double

        'Jump to the clicked location, bug FIX.
        dblValue = (Convert.ToDouble(e.X) / Convert.ToDouble(tbTest.Width)) * (tbTest.Maximum - tbTest.Minimum)
        tbTest.Value = Convert.ToInt32(dblValue)
    End If
End Sub

*请注意第一行末尾的Handles关键字后面列出的多个事件。我还添加了一个检查以确保鼠标左键按下。