.NET TrackBar MouseDown следовать за курсором?
В настоящее время я использую этот код, чтобы исправить ошибку, при которой, если вы щелкнете где-нибудь на горизонтальной панели треков, она перейдет к середине, а затем к концу трекбара. Таким образом, этот код исправляет эту ошибку, которая теперь переходит к месту, где вы щелкнули.
Но проблема остается, когда я удерживаю мышь и перемещаю ее по трекбару, за которым должен следовать ползунок, но он просто сбрасывается в начальное положение, как мне заставить его следовать прямо над курсором? мне нужен таймер для этого?
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 ответ
Сделайте так, чтобы метод обрабатывал события 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
Ключевое слово в конце первой строки. Я также добавил проверку, чтобы убедиться, что левая кнопка мыши нажата.