进度条值无效

时间:2014-05-20 03:49:10

标签: vb.net winforms visual-studio-2013

我对此有些新意,请原谅我,我正在制作一个简单的音乐播放器,其中包含一个显示当前歌曲持续时间的进度条。当我播放大约3:50的歌曲时,歌曲结束后会显示以下错误:

Additional information: Value of '231' is not valid for 'Value'. 'Value' should be between 'minimum' and 'maximum'.

然而,一首长5分钟的歌曲不会显示此错误,所以我有点困惑。代码中似乎是问题的部分:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    ProgressBar1.Maximum = AxWindowsMediaPlayer1.currentMedia.duration
    ProgressBar1.Value = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition
    ProgressBar1.Increment(1)
End Sub

具体而言,错误指向:

ProgressBar1.Value = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition

非常感谢任何解决此问题的帮助。

2 个答案:

答案 0 :(得分:0)

当歌曲结束时,它的Ctlcontrols.currentPosition属性可以取值为currentMedia.duration + 1,这可能是由于持续时间的小数秒在内部舍入。在我看来,这两个程序之间的舍入方式存在不一致。

您最好的选择是进行以下更改:

ProgressBar1.Value = Math.Min(AxWindowsMediaPlayer1.Ctlcontrols.currentPosition, AxWindowsMediaPlayer1.currentMedia.duration)

答案 1 :(得分:0)

首先获取歌曲的第二首,然后尝试计算歌曲持续时间的100%值,该值将为进度条示例生成增量值:

3:50min = 230seconds / 100 = 2.3

这意味着您必须每秒将进度条增加2.3到230秒......