这个VB代码有什么错误?

时间:2013-01-08 00:49:45

标签: vb.net string visual-studio-2010 integer media-player

我试图让标签的时间每秒都改变,以匹配正在播放的媒体的时间。

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

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

3 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

根据文档here,跟踪栏的值必须设置为整数介于最小值和最大值之间。

如果您使用的是默认的最小值和最大值,那将是010,如果您已经更改了它们(显然),那将是其他内容。

您需要弄清楚如何将时间字符串(或剩余时间整数,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到最大值) )。

答案 2 :(得分:0)

你可以使用这段代码来显示播放时媒体播放器的时间和播放的歌曲或视频的持续时间吗4英文不好



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