Vb.net 什么';这个VB代码有什么错误?

Vb.net 什么';这个VB代码有什么错误?,vb.net,string,visual-studio-2010,integer,media-player,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.currentPosi

我试图使标签的时间每秒钟改变一次,以匹配媒体播放的时间

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

是否将字符串改为整数?

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

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
10
,如果您更改了它们,则为其他值(显然)

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

由于您具有持续时间和位置,因此可以使用以下内容:

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到最大值不等).

您能用此代码显示媒体播放器播放的时间以及播放的歌曲或视频的持续时间吗

TrackBar2.max=AxWindowsMediaPlayer1.Ctlcontrols.currentItem.duration
Label3.Text=AxWindowsMediaPlayer1.Ctlcontrols.currentPositionString
TrackBar2.Value=AxWindowsMediaPlayer1.Ctlcontrols.currentPosition

Label4.Text=AxWindowsMediaPlayer1.Ctlcontrols.currentItem.durationString
TrackBar2.Value=remainWell,我使用以下方法设置最大值:
Private子OpenToolStripMenuItem\u Click(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理OpenToolStripMenuItem。Click OpenFileDialog1.ShowDialog()AxWindowsMediaPlayer1.URL=(OpenFileDialog1.FileName)Timer1.Interval=1000 Timer1.Start()TrackBar2.max=AxWindowsMediaPlayer1.currentMedia.duration End Sub
@NathanielWashburn,如果要将最大值设置为持续时间,则只需将轨迹栏值设置为当前位置(或持续时间小于当前位置,取决于所需方向)编辑:我把它改成了
TrackBar2.Value=AxWindowsMediaPlayer1.currentMedia.markerCount
但是轨迹栏还是不动,标签上一直写着11。实际上,它从11到6到5到6到11。-@NathanielWashburn,你为什么要用markerCount?这没什么关系与你通过文件的距离有关。