我目前使用此代码来修复错误,如果您单击Horizontal 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
答案 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
关键字后面列出的多个事件。我还添加了一个检查以确保鼠标左键按下。