|
分類:[.NET 全般]
VB.NET初心者です。
初めまして
VistualStudio2022で音楽プレイヤーを作っています。
「質問内容」
・1、axwindowsMediaPlayerを使っております。
・2、リストボックスでNextとpreviousのボタンを作りました。
リストボックスに音楽ファイルを開き、Nextを押すとリストボックスが最初の1曲目に、previousを押すと一番目になって、一番最後になる現状となっております。
検索などでググって作りました。
「問題となるコード」
MusicAというフォームを作成しました。
Public Class MusicA
Dim strFileName As String 'ファイルを開くとリストボックスに名前が表示される(フルパスではない)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
AxWindowsMediaPlayer1.settings.autoStart = False
OpenFileDialog1.FileName = ""
OpenFileDialog1.Multiselect = True
OpenFileDialog1.Title = "開くファイルを指定"
OpenFileDialog1.Filter =
"Windows Media Audio 形式(.mp3|*.mp3")
OpenFileDialog1.FilterIndex = 1
OpenFileDialog1.RestoreDirectory = True
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
For Each strFilePath As String In OpenFileDialog1.FileNames
strFileName = IO.Path.GetFileName(strFilePath)
ListBox1.Items.Add(strFileName)
AxWindowsMediaPlayer1.currentPlaylist.appendItem(AxWindowsMediaPlayer1.newMedia(strFilePath))
Next
LabelTitle.Text = System.IO.Path.GetFileName(ListBox1.SelectedItem)
Timer1.Start()
Timer2.Start()
ListBox1.SelectedIndex = 0
End If
End Sub
ファイルを開く時のコードです。
'リストボックス一覧、繰り返す(index0に戻る)
Private Sub NextButton_Click(sender As Object, e As EventArgs) Handles NextButton.Click
If ListBox1.Items.Count >= ListBox1.SelectedIndex + 1 Then
ListBox1.SelectedIndex -= 1
AxWindowsMediaPlayer1.Ctlcontrols.next()
AxWindowsMediaPlayer1.Ctlcontrols.play()
MetroProgressbar1.Value = 0
Else
If AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsMediaEnded Then
MessageBox.Show("曲がありません",
"エラー",
MessageBoxButtons.OK,
MessageBoxIcon.Asterisk)
AxWindowsMediaPlayer1.Ctlcontrols.stop()
End If
End If
End Sub
Private Sub PreviousButton_Click(sender As Object, e As EventArgs) Handles previousButton.Click
If AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsMediaEnded Then
Exit Sub
End If
If ListBox1.Items.Count >= ListBox1.SelectedIndex - 1 Then
ListBox1.SelectedIndex += 1
AxWindowsMediaPlayer1.Ctlcontrols.previous()
AxWindowsMediaPlayer1.Ctlcontrols.play()
MetroProgressbar1.Value = 0
Else
If AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsMediaEnded Then
MessageBox.Show("曲がありません",
"エラー",
MessageBoxButtons.OK,
MessageBoxIcon.Asterisk)
AxWindowsMediaPlayer1.Ctlcontrols.stop()
End If
End If
End Sub
現在のコードになります。
Nextとpreviousのボタンです。
「試した事」
リストボックスにファイルを開いた時、再生してからNextとpreviousを押すと(複数開いた数)一番最後でNext押すと1番目に戻ります。
previousを押すと一番目に行って一番最後になります。
「やりたい事」
Next リストの最後で止まる、停止(メッセージボックス("曲がありません")したい
previous リストの一番目で止まる&停止したい
やりたい事は上記になります。
教えてください。お願いします。
|