我正在开发媒体播放器,我正在尝试使用鼠标光标更改进度条的值。 我想要的是设置鼠标光标点击+拖动后指向的进度条的值。
答案 0 :(得分:2)
进度条不是用于此目的的正确控件。你应该使用TrackBar。
但它可以使用,大约-10个优雅点。 ProgressBar最棘手的问题是它可以激发进步。这使得对鼠标移动的响应变慢。该动画可以被禁用,但不是完美的。最接近的是:
Private Shared Sub ChangeProgress(bar As ProgressBar, e As MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim mousepos = Math.Min(Math.Max(e.X, 0), bar.ClientSize.Width)
Dim value = CInt(bar.Minimum + (bar.Maximum - bar.Minimum) * mousepos / bar.ClientSize.Width)
'' Disable animation, if possible
If value > bar.Value And value < bar.Maximum Then
bar.Value = value + 1
bar.Value = value
Else
bar.Value = value
End If
End If
End Sub
从MouseDown和MouseMove事件处理程序调用它:
Private Sub ProgressBar1_MouseMove(sender As Object, e As MouseEventArgs) Handles ProgressBar1.MouseMove
ChangeProgress(ProgressBar1, e)
End Sub
Private Sub ProgressBar1_MouseDown(sender As Object, e As MouseEventArgs) Handles ProgressBar1.MouseDown
ChangeProgress(ProgressBar1, e)
End Sub
这是可行的,你会注意到达到100%有点尴尬。但是,实际上,请使用TrackBar。这是为了做到这一点。