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

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

新規登録して質問してみよう
ただいま回答率
85.48%
VB

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

Visual Studio

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

Visual Studio 2013

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

VB.NET

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

Q&A

解決済

1回答

1937閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

VB

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

Visual Studio

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

Visual Studio 2013

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

VB.NET

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

0グッド

0クリップ

投稿2018/05/09 14:09

編集2018/05/10 12:23

曲が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に変更 'TrA1~7=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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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

>1

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

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

投稿2018/05/10 04:48

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/10 12:25

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

退会済みユーザー

2018/05/10 13:39

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

2018/05/11 02:38

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

退会済みユーザー

2018/05/12 03:07 編集

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問