如何通过在vb.net中拖动鼠标来更改进度条值

时间:2014-11-17 11:50:17

标签: vb.net

我正在开发媒体播放器,我正在尝试使用鼠标光标更改进度条的值。 我想要的是设置鼠标光标点击+拖动后指向的进度条的值。

1 个答案:

答案 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。这是为了做到这一点。