2013-01-08 83 views
0

我试图让标签的时间每秒变化一次以匹配正在播放的媒体时间。这个VB代码有什么错误?

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 

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

+1

TrackBar2.Value =保持 –

回答

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 

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

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到最大值)。

+0

是的,绝对还需要遵循这些文档^^。 –

+0

好,我设置使用此最大值: '私人小组OpenToolStripMenuItem_Click(BYVAL发件人为System.Object的,BYVALË作为System.EventArgs)把手OpenToolStripMenuItem.Click OpenFileDialog1.ShowDialog() AxWindowsMediaPlayer1.URL =( OpenFileDialog1.FileName) Timer1.Interval = 1000 Timer1.Start() TrackBar2.Maximum = AxWindowsMediaPlayer1.currentMedia.duration 结束Sub' –

+0

@NathanielWashburn,如果你最大设定时间,然后你只需要将跟踪栏值设置为当前位置(或持续时间减去当前位置,具体取决于所需的方向)。 – paxdiablo

0

您可以使用此代码,以显示媒体播放器的时间播放时和歌曲或视频的时间玩耍索里4的英语不好

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