質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • Visual Studio

    1697questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • VB.NET

    873questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

  • Visual Studio 2013

    305questions

    Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

  • VB

    295questions

    VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

リストボックスで曲名が次の曲が再生しようとしたとき

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 127
退会済みユーザー

退会済みユーザー

曲が1曲目終わるときに2曲目に再生する時に2度再生しまいました。
以下のコード
Form全体

Imports System.IO
Imports System
Imports System.Globalization
Imports System.Threading
Public Class Form1
    Dim a As String()
    Dim file As String()
    Dim IntSelectIndexPre As Integer = 0
    Dim strFileName1 As String
    Dim s22 As String
    Private history2 As New HashSet(Of String)(StringComparer.OrdinalIgnoreCase)
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
'panelをname変更にしたもの
        Track1_panel.Hide()
        wmp00.Hide()
'起動後の準備:574, 188
        Me.Width = 574
        Me.Height = 184
'同時ファイルをクリア
 Public Sub aaa()
        history2.Clear()
    End Sub
'Folder_2=pictureboxです。
Private Sub Folder_2_Click(sender As Object, e As EventArgs) Handles folder_2.Click
        '追加
        If Track1_check.Checked Then
            Track1_check.Checked = False
            'トラック1追加
            Width = 574
            Height = 184
            Track1_panel.Show()
            MessageBox.Show("追加しました")
End Sub
'Folder_3=pictureboxです。
Private Sub Folder_3_Click(sender As Object, e As EventArgs) Handles folder_3.Click
        If Track1_check.Checked Then
            Track2_check.Checked = False
            Track1_check.Checked = False
            Track1_panel.Hide()
            wmp00.Ctlcontrols.stop()
            Width = 574
            Height = 184
aaa.clear
            MessageBox.Show("削除されました")
        End If
    End Sub
'Timer=timer3~5に変更
'TrA17=pictureboxです。
'Time_text.Text=テキストボックス:時間経過
'Time_End.Text=曲名の時間
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
       Progbar1.Value = 0
        Time_text.Text = TimeSpan.FromSeconds(wmp00.Ctlcontrols.currentPosition).ToString("mm\:ss")
'Timer3,4に変更
        Me.Timer3.Enabled = False
        Me.Timer4.Enabled = True

    End Sub
    Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick
        Dim length As Integer
        Dim current As Integer
        length = If(wmp00.currentMedia?.duration, 0)
        current = wmp00.Ctlcontrols.currentPosition
        Progbar1.Value = current
        Progbar1.Maximum = length
        If Progbar1.Value = 100 Then
            Progbar1.Value = 0
        End If
    End Sub
    Private Sub Timer5_Tick(sender As Object, e As EventArgs) Handles Timer5.Tick
        '現在の時間(ポジション)を秒から分:秒に変換しTextBox2に表示
        Time_text.Text = TimeSpan.FromSeconds(wmp00.Ctlcontrols.currentPosition).ToString("mm\:ss")
    End Sub
    Private Sub wmp00_PlayStateChange(ByVal sender As System.Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles wmp00.PlayStateChange
        Try

            For i = 0 To wmp00.currentPlaylist.count - 1
                If wmp00.currentMedia.isIdentical(wmp00.currentPlaylist.Item(i)) Then
                    ListBox1.SelectedIndex = Str(i)

                End If
            Next

        Catch ex As Exception

        End Try
        Progbar1.Value = 0
        Select Case e.newState
            Case WMPLib.WMPPlayState.wmppsPlaying '再生中
                Time_end.Text = wmp00.currentMedia.durationString
'追加
               Timer5.Start()
ProgressBar1.Maximum = wmp00.currentMedia.duration
                ProgressBar1.Value = 0                
            Case e.newState = WMPLib.WMPPlayState.wmppsMediaEnded '再生終了
                Timer5.Stop()
                Progbar1.Value = 0
            Case WMPLib.WMPPlayState.wmppsMediaEnded
                ' 再生が全て終了した時()
                wmp00.Ctlcontrols.stop()

            Case Else
                Debug.Print(e.newState.ToString())

        End Select


    End Sub
    Private Sub HScrollBar1_Scroll(sender As Object, e As ScrollEventArgs) Handles HScrollBar1.Scroll
        wmp00.settings.volume = HScrollBar1.Value

        Track1_Vo0.Text = "" & HScrollBar1.Value
    End Sub

    Private Sub Track1ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles Track1ToolStripMenuItem.Click
        'ファイルを開くダイアログTrack1
        HScrollBar1.Value = 50
        Track1_Vo0.Text = 50
        TrA1.Enabled = True
        TrA2.Enabled = True
        TrA3.Enabled = True
        TrA4.Enabled = True
        TrA5.Enabled = True
        TrA6.Enabled = True
        TrA7.Enabled = True
        wmp00.settings.autoStart = False
        OpenFileDialog1.FileName = ""
        OpenFileDialog1.Multiselect = True
        OpenFileDialog1.Title = "開くファイルを指定"
        OpenFileDialog1.Filter = "MP3(*.mp3)|*.mp3|
全てのファイル (*.*)|*.*"
        OpenFileDialog1.FilterIndex = 1
        OpenFileDialog1.RestoreDirectory = True
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then


        End If
        For Each strFilePath As String In OpenFileDialog1.FileNames
            Dim strFileName As String = IO.Path.GetFileName(strFilePath)
            ListBox1.Items.Add(strFileName)

            wmp00.currentPlaylist.appendItem(wmp00.newMedia(strFilePath))

        Next

        TrA00.Text = System.IO.Path.GetFileName(ListBox1.SelectedItem)


    End Sub

    Private Sub FolderE_Click(sender As Object, e As EventArgs) Handles folderE.Click
        'クリアする
        Aa0()
        'Track1
        wmp00.currentPlaylist.clear()
        ListBox1.Items.Clear()
        Time_end.Clear()
        TrA00.Clear()
        Time_text.Clear()
        wmp00.Ctlcontrols.stop()
        wmp00.currentPlaylist.clear()
        TrA1.Enabled = False
        TrA2.Enabled = False
        TrA3.Enabled = False
        TrA4.Enabled = False
        TrA5.Enabled = False
        TrA6.Enabled = False
        TrA7.Enabled = False
        MessageBox.Show("クリアしました")
    End Sub

    Private Sub バージョンToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles バージョンToolStripMenuItem.Click
        Version.Show()
    End Sub
    Private history1 As New HashSet(Of String)(StringComparer.OrdinalIgnoreCase)
    Public Sub Aa0()
        history1.Clear()
    End Sub
    Private Sub OpenFileDialog1_FileOk(sender As Object, e As ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
        Dim files = OpenFileDialog1.FileNames
        Dim conflict = files.Where(AddressOf history1.Contains)

        If conflict.Any() Then
            e.Cancel = True
            Dim fileNames = conflict.Select(AddressOf System.IO.Path.GetFileName)
            MessageBox.Show("同じファイルがあります。" & vbCrLf & String.Join(vbCrLf, fileNames), "競合", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        Else
            Array.ForEach(files, AddressOf history1.Add)
        End If
    End Sub
    Private Sub TrA1_Click(sender As Object, e As EventArgs) Handles TrA1.Click
        wmp00.Ctlcontrols.play()
        Progbar1.Value = 0
        Timer3.Start()
       Timer4.Start()

        TrA00.Text = System.IO.Path.GetFileName(ListBox1.SelectedItem)

    End Sub

    Private Sub TrA2_Click(sender As Object, e As EventArgs) Handles TrA2.Click
        wmp00.Ctlcontrols.pause()

    End Sub

    Private Sub TrA3_Click(sender As Object, e As EventArgs) Handles TrA3.Click
        wmp00.Ctlcontrols.stop()
        Progbar1.Value = 0

    End Sub

    Private Sub TrA4_Click(sender As Object, e As EventArgs) Handles TrA4.Click
        Try

            ListBox1.SelectedIndex += -1
            Progbar1.Value = 0
            Timer3.Start()
            Timer4.Start()
        Catch ex As Exception
            MessageBox.Show("曲がありません",
               "エラー",
               MessageBoxButtons.OK,
               MessageBoxIcon.Asterisk)
            wmp00.Ctlcontrols.stop()
            Timer1.Stop()
            Timer2.Stop()

        End Try
    End Sub

    Private Sub TrA5_Click(sender As Object, e As EventArgs) Handles TrA5.Click
        Try

            ListBox1.SelectedIndex += 1
            Progbar1.Value = 0
            Timer3.Start()
            Timer4.Start()
        Catch ex As Exception
            MessageBox.Show("曲がありません",
               "エラー",
               MessageBoxButtons.OK,
               MessageBoxIcon.Asterisk)
        End Try
    End Sub

    Private Sub TrA6_Click(sender As Object, e As EventArgs) Handles TrA6.Click
        Try
            wmp00.Ctlcontrols.currentPosition = wmp00.Ctlcontrols.currentPosition - 5

        Catch ex As Exception

        End Try
    End Sub

    Private Sub TrA7_Click(sender As Object, e As EventArgs) Handles TrA7.Click
        Try
            wmp00.Ctlcontrols.currentPosition = wmp00.Ctlcontrols.currentPosition + 5

        Catch ex As Exception

        End Try
    End Sub
’問題発生
    Dim IntSelectIndexPre1 As Integer=0

    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
        If ListBox1.SelectedItem <> "" Then
            TrA00.Text = System.IO.Path.GetFileName(ListBox1.SelectedItem)
        End If
        If IntSelectIndexPre1 = ListBox1.SelectedIndex Then
            Exit Sub
        End If
        IntSelectIndexPre1 = ListBox1.SelectedIndex
wmp00.Ctlcontrols.playItem(wmp00.currentPlaylist.Item(ListBox1.SelectedIndex))
    End Sub

問題発生

1、解決しました。

問題発生した部分=Progar1.Value = current
System.ArgumentOutOfRangeException: ''1' の値は 'Value' に対して有効ではありません。'Value' は 'minimum' と 'maximum' の間でなければなりません。
パラメーター名:Value


2、
’問題発生
Dim IntSelectIndexPre1 As IntegerからEnd Subまで

1曲目が終わってから2曲目に再生する時2度再生してしまいました。
’問題発生
Dim IntSelectIndexPre1 As Integer~すべて消す

2度再生はしませんがリストボックスから選択はさせたいです。

教えてほしい事

2で問題発生するのでどのように改善・修正したらいいんでしょうか?
コード見にくいかもしれませんがごめんなさい(name変更)
教えてください。お願いします。

開発バージョン

Vistual Sutido 2017
プロジェクト NetFrameworck4.5

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

気になった点のみ指摘します。

>1

プログレスバーに代入している値が、min~maxの範囲外になっていると書かれていますね。
valueに代入したあと、Maximumの設定をしているので、逆にしてみてはいかがでしょうか。

>2
IntSelectIndexPre1の初期値がありません。
Loadイベントあたりで初期化してみてはいかがでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/10 21:25

    ttyp03さん
    ありがとうございます。
    >1は解決しました。
    >2の方はLoadイベントに追加して見ます。

    キャンセル

  • 2018/05/10 22:39

    ごめんなさい
    Loadイベントに追加してみましたが、できませんでした。
    申し訳ございません。

    キャンセル

  • 2018/05/11 11:38

    IntSelectIndexPre1については、すみません初期値ありましたね。
    2の原因として他に考えられそうなのをまじめに見てみました。
    おそらく、1曲再生が終わるとwmp00_PlayStateChangeイベントが発生するのではないかと思いますが、その中でListBox1を操作している箇所があります。
    ListBox1.SelectedIndex = Str(i)
    おそらくここでSelectedIndexを変更しているので、ListBox1_SelectedIndexChangedイベントが発生し、2回再生が行われてしまうのではないかと推測します。
    ListBox1.SelectedIndexに代入する処理をコメント化するなどして動きを見てみてください。
    「おそらく」ばかりで申し訳ないです。

    キャンセル

  • 2018/05/11 19:35 編集

    ありがとうございました
    最初から作り直してみます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Visual Studio

    1697questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • VB.NET

    873questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

  • Visual Studio 2013

    305questions

    Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

  • VB

    295questions

    VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。