0

我正在尝试使标签的时间每秒更改一次以匹配正在播放的媒体的时间。

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    Dim remain As Int32 = AxWindowsMediaPlayer1.currentMedia.duration - AxWindowsMediaPlayer1.Ctlcontrols.currentPosition

    Dim Minutes As String

    Dim Secs As String

    Dim ElapsedTime As String

    Minutes = (remain / 60).ToString("00")

    Secs = (remain Mod 60).ToString("00.00")

    ElapsedTime = Minutes & "." & Secs

    Label1.Text = ElapsedTime ' Display the remaining time for the .wav file in a label in mm:ss format

    TrackBar2.Value = ElapsedTime (Error with this line: Conversion from string "11.26.00" to type 'Integer' is not valid.)

End Sub

我是否将字符串更改为整数?

4

3 回答 3

0

我认为这是编译器无法隐式转换值的问题,我要么更改字符串的格式,要么执行以下操作:

Dim totalTime as Integer = 0
For Each thing In ElapsedTime.Split(".")
     totalTime += CInt(thing) 'So, "11.26.00" will turn into 11 + 26 + 0 = 37 for totalTime
Next

这只是一个简单的大纲,您可以根据需要进行任何额外的算术运算。

于 2013-01-08T00:59:06.587 回答
0

根据此处的文档,轨迹栏需要将其值设置为介于最小值和最大值之间的整数。

0如果您使用默认的最小值和10最大值,或者如果您更改了它们(显然),那将是。

您需要弄清楚如何将时间字符串(或剩余时间整数remain)更改为介于最小值和最大值之间的值,然后将值设置为该值。

由于你有持续时间和位置,你可以使用类似的东西:

Dim pos as Int32 = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition
Dim tot as Int32 = AxWindowsMediaPlayer1.currentMedia.duration
Dim tenthsToGo as Int32 = 10 * (tot - pos) / tot
' Now use tenthsToGo (or 10-tenthsToGo depending on direction) to set trackbar '

如果您已将最大值设置为持续时间(并将最小值保留为零),如评论中所示,那么您可以简单地将轨迹栏值设置为当前位置(从 0 到最大值不等)。

于 2013-01-08T01:01:22.053 回答
0

你能用这个代码来显示媒体播放器的播放时间和播放歌曲或视频的持续时间吗 4 英语不好

 TrackBar2.Maximum = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.duration
        Label3.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentPositionString
        TrackBar2.Value = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition
        Label4.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.durationString

于 2017-01-31T18:07:28.890 回答