我对此有些新意,请原谅我,我正在制作一个简单的音乐播放器,其中包含一个显示当前歌曲持续时间的进度条。当我播放大约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
非常感谢任何解决此问题的帮助。
答案 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秒......