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

ドキュメント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 から最大値まで変化する) に設定するだけです。

于 2013-01-08T01:01:22.053 に答える