HScrollBarコントロールの設定
HScrollBarコントロールは現在の演奏位置を表示したり、演奏開始位置を変更したりします。



  1. 演奏中はスクロールバーが常に移動する必要がありますので、1度発生したらもう終わりなんて感じのイベント ハンドラは使用できません。常に発生するTimer1_Tickイベントを使うのが一番簡単です。

  2. 演奏が開始と同時にTimer1_Tickイベントハンドラーを発生させます。   AxWindowsMediaPlayer1_PlayStateChangeイベントハンドラの中でe.newState = 3になった時にTimer1_Tickイベントハンドラーを発生させます。

  3. 演奏が終了したらTimer1_Tickイベントハンドラが働かなくなるようにします。(しなくてもよい) e.newState = 8の時とe.newState = 1にTimer1.Enabled を Falseにします。

  4. AxWindowsMediaPlayer1_PlayStateChangeイベントハンドラの中でe.newState = 3の時にスクロールバーの上限最大値を入力します。 この時に上限最大値を演奏情報の値と同じにすると、演奏情報の値がスクロールバーの上限最大値を超えることがありますので少し 大きめに設定します 例 +5とか +3とか

  5. Timer1のインターバルが長いと演奏が始まってもTimer1_Tickイベントハンドラーが発生しませんので Timer1のインターバル は短く設定します。

  6. Timer1_Tickイベントハンドラーの中に、現在の演奏位置の値をスクロールバーのValueへ入力します。

  7. 演奏が終了した時、HScrollBarのボタンをスタート位置に戻すには、「e.newState = 1」または「e.newState = 8」 になった場合にHScrollBarの値を0にします。




ここまでのコードです。

'Timer1_Tickイベント
Private Sub Timer1_Tick() Handles Timer1.Tick

'再生位置をスクロールバーのValueへ入力します。
HScrollBar1.Value = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition

End Sub

'HScrollBar1_Scrollイベント
Private Sub HScrollBar1_Scroll(sender As System.Object, e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll

'再生位置にスクロールを移動した位置を入力
AxWindowsMediaPlayer1.Ctlcontrols.currentPosition = CDbl(HScrollBar1.Value)

End Sub

'AxWindowsMediaPlayer1_PlayStateChangeイベントハンドラ
Private Sub AxWindowsMediaPlayer1_PlayStateChange(sender As System.Object, _
e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange
'演奏中
If e.newState = 3 Then
Timer1.Enabled = True   'Timer1のスタート
Timer1.Interval = 1    'Timer1のインターバル

'HScrollBar1の上限最大値を入力する
HScrollBar1.Maximum = CInt(AxWindowsMediaPlayer1.currentMedia.duration)+5
End If

以上でHScrollBarコントロールの設定は終了です



ここまでで基本的な解説は終了です。お疲れ様でした。



フォームのデザインをもう少しオリジナリティにしたい方は「おまけのページへ」どうぞ。