1

我目前使用此代码来修复如果您单击水平 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
4

1 回答 1

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*请注意第一行末尾关键字后列出的多个事件。我还添加了一个检查以确保鼠标左键按下。

于 2013-07-01T21:51:43.797 回答