オープンファイルダイアログで開いた音楽ファイルの名前をListBoxに表示する方法 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 友哉  (高校生)
投稿日時
2011/2/14 14:02:18
shuさん同じです。
すいません間違えて漢字に変換してしまいましたorz
読み返してみます。
パールマンさん
全体の流れは、
1、リストボックスに音楽ファイルが入っているファイルを表示させる。
2、表示させた音楽ファイルをダブルクリックしたら再生されるようにする。
3、音楽ファイルをえらんで再生ボタンをクリックしたら再生するようにする。
4、停止ボタンを押せば再生している音楽が停止する。
全体の流れです。
すいません間違えて漢字に変換してしまいましたorz
読み返してみます。
パールマンさん
全体の流れは、
1、リストボックスに音楽ファイルが入っているファイルを表示させる。
2、表示させた音楽ファイルをダブルクリックしたら再生されるようにする。
3、音楽ファイルをえらんで再生ボタンをクリックしたら再生するようにする。
4、停止ボタンを押せば再生している音楽が停止する。
全体の流れです。
投稿者 shu  (社会人)
投稿日時
2011/2/14 07:46:32
名前が漢字になっているけど最近のいくつかのスレと
同じ方ですよね?
たぶんわからないのはファイル名のフルパスを渡すところかと
思うのですが、OpenFileDialogで取得して再生出来たときのファイル名と
リストボックスから再生しようとしたときに再生出来ないファイル名の違いを
比較して一覧のスレの内容をよく読み返してみてはどうでしょう?
同じ方ですよね?
たぶんわからないのはファイル名のフルパスを渡すところかと
思うのですが、OpenFileDialogで取得して再生出来たときのファイル名と
リストボックスから再生しようとしたときに再生出来ないファイル名の違いを
比較して一覧のスレの内容をよく読み返してみてはどうでしょう?
投稿者 パールマン  (社会人)
投稿日時
2011/2/14 00:55:18
友哉さんが作っていらっしゃるものが、実用のソフトウェアのものなのか習作なのかは判りませんが、少なくても‘仕様’を決めましょう。
この掲示スレッドの冒頭に、
>
> 開いたmp3のファイル名をListBoxに表示して表示したmp3ファイルをダブルクリックしたら
> 音楽が再生するようにしたいです。
>
とあって、
最新の返信には、
>
> リストボックスに表示させた曲を選んでボタン1をクリックすると再生するようにしたいです。
>
と書かれています。
これではアドバイスする皆さんも、困ってしまいます。
‘仕様’という表現が難しいようでしたら、まず‘全体の流れ’を考えてください。
音楽ソースがあって、誰が何時何をどのように操作したら再生されるのか。
ソフトウェアに音楽ソースが呼ばれる:これがインプットです。
ソフトウェアによって、スピーカなど出力デバイスから音楽が流れるのがアウトプットです。
インプットからアウトプットまでの順序が流れです。
この掲示スレッドの冒頭に、
>
> 開いたmp3のファイル名をListBoxに表示して表示したmp3ファイルをダブルクリックしたら
> 音楽が再生するようにしたいです。
>
とあって、
最新の返信には、
>
> リストボックスに表示させた曲を選んでボタン1をクリックすると再生するようにしたいです。
>
と書かれています。
これではアドバイスする皆さんも、困ってしまいます。
‘仕様’という表現が難しいようでしたら、まず‘全体の流れ’を考えてください。
音楽ソースがあって、誰が何時何をどのように操作したら再生されるのか。
ソフトウェアに音楽ソースが呼ばれる:これがインプットです。
ソフトウェアによって、スピーカなど出力デバイスから音楽が流れるのがアウトプットです。
インプットからアウトプットまでの順序が流れです。
投稿者 友哉  (高校生)
投稿日時
2011/2/13 18:46:14
るきおさんのおかげでリストボックスに曲を表示させることは出来ました。
リストボックスに表示させた曲を選んでボタン1をクリックすると再生するようにしたいです。
リストボックスに表示させた曲を選んでボタン1をクリックすると再生するようにしたいです。
投稿者 るきお  (社会人)
投稿日時
2011/2/13 18:08:11
>開いたmp3のファイル名をListBoxに表示
これもできてないですか?
何ができていて、何ができていなくて、何をききたいかはっきりさせましょう。
…とYuOさんも言っております。
ListBoxに表示させる件は私ならこう書きます。
これもできてないですか?
何ができていて、何ができていなくて、何をききたいかはっきりさせましょう。
…とYuOさんも言っております。
ListBoxに表示させる件は私ならこう書きます。
Private Sub Mp3形式ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mp3形式ToolStripMenuItem.Click
Dim dialog As New FolderBrowserDialog
If dialog.ShowDialog = Windows.Forms.DialogResult.OK Then
For Each FilePath As String In IO.Directory.GetFiles(dialog.SelectedPath, "*.mp3")
ListBox1.Items.Add(IO.Path.GetFileName(FilePath))
Next
End If
dialog.Dispose()
End Sub
投稿者 YuO  (社会人)
投稿日時
2011/2/13 12:35:37
どうも,やりたいことをちゃんと分解できていないように見えます。
> 開いたmp3のファイル名をListBoxに表示して表示したmp3ファイルをダブルクリックしたら
> 音楽が再生するようにしたいです。
やりたいことは分解して箇条書きで書くようにしてはどうでしょうか。
今回だと,
・OpenFileDialogを使ってファイル名を得る
・ListBoxにオブジェクトを追加して表示する
・ListBoxのダブルクリックイベントへ応答する
・ListBoxから選択中のオブジェクトを取得する
・指定したファイルを再生する
の5つができればよいわけです。
最初の項目が出来ていて,最後の項目が出来かけなわけですが,残り3つの項目はどこまで解っていますか。
最後の項目が出来かけ,というのはFileNameフィールドを使っているためです。
これでは最後に開いたファイルしか開けません。
FileNameフィールドを使わないようにしてみてください。
References)
MSDN: ListBox.Items プロパティ (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.items.aspx
MSDN: ListBox.ObjectCollection.Add メソッド (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.objectcollection.add.aspx
MSDN: Control.DoubleClick イベント (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.doubleclick.aspx
MSDN: ListBox.SelectedItem プロパティ (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.selecteditem.aspx
MSDN: ListControl.DisplayMember プロパティ (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listcontrol.displaymember.aspx
> 開いたmp3のファイル名をListBoxに表示して表示したmp3ファイルをダブルクリックしたら
> 音楽が再生するようにしたいです。
やりたいことは分解して箇条書きで書くようにしてはどうでしょうか。
今回だと,
・OpenFileDialogを使ってファイル名を得る
・ListBoxにオブジェクトを追加して表示する
・ListBoxのダブルクリックイベントへ応答する
・ListBoxから選択中のオブジェクトを取得する
・指定したファイルを再生する
の5つができればよいわけです。
最初の項目が出来ていて,最後の項目が出来かけなわけですが,残り3つの項目はどこまで解っていますか。
最後の項目が出来かけ,というのはFileNameフィールドを使っているためです。
これでは最後に開いたファイルしか開けません。
FileNameフィールドを使わないようにしてみてください。
References)
MSDN: ListBox.Items プロパティ (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.items.aspx
MSDN: ListBox.ObjectCollection.Add メソッド (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.objectcollection.add.aspx
MSDN: Control.DoubleClick イベント (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.doubleclick.aspx
MSDN: ListBox.SelectedItem プロパティ (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.selecteditem.aspx
MSDN: ListControl.DisplayMember プロパティ (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listcontrol.displaymember.aspx
投稿者 友哉  (社会人)
投稿日時
2011/2/13 02:32:10
オープンファイルダイアログで開いたmp3ファイルを再生することは出来ました。
開いたmp3のファイル名をListBoxに表示して表示したmp3ファイルをダブルクリックしたら
音楽が再生するようにしたいです。
現在はファイルを開いて再生ボタンを押せば再生され、音楽が進むにつれHScrollBarが自動的に進んでいくようにしています。
HScrollBarは動かせばその時間帯の音楽が流れます。
言葉じゃよくわからないのでコードを載せます。
前ここの掲示板で教えてもらったコードです。
このコードに付け足してもらったり修正して頂きたいです。
開いたmp3のファイル名をListBoxに表示して表示したmp3ファイルをダブルクリックしたら
音楽が再生するようにしたいです。
現在はファイルを開いて再生ボタンを押せば再生され、音楽が進むにつれHScrollBarが自動的に進んでいくようにしています。
HScrollBarは動かせばその時間帯の音楽が流れます。
言葉じゃよくわからないのでコードを載せます。
前ここの掲示板で教えてもらったコードです。
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.IO
Public Class Form1
<DllImport("winmm.dll", CharSet:=CharSet.Auto)> _
Private Shared Function mciSendString( _
ByVal command As String, _
ByVal buffer As StringBuilder, _
ByVal bufferSize As Integer, _
ByVal hwndCallback As IntPtr) As Integer
End Function
Dim FileName As String
Private Sub Mp3形式ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mp3形式ToolStripMenuItem.Click
Me.OpenFileDialog1.Filter = "MP3形式サウンド(*.mp3)|*.mp3"
Me.OpenFileDialog1.InitialDirectory = Application.StartupPath
If Me.OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
FileName = Me.OpenFileDialog1.FileName
Me.ListBox1.Text = Path.GetFileName(FileName)
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If File.Exists(FileName) Then
Dim Command As String
Command = String.Format("open ""{0}"" alias {1}", FileName, "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("status {0} {1}", "MySound", "length")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
HScrollBar1.Maximum = Integer.Parse(Res.ToString)
Command = "play MySound"
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Me.Timer1.Interval = 500
Me.Timer1.Start()
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Timer1.Stop()
Dim Command As String
Command = String.Format("stop {0}", "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("close {0}", "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Command As String = String.Format("status {0} {1}", "MySound", "position")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
Me.HScrollBar1.Value = Integer.Parse(Res.ToString)
End Sub
Private Sub HScrollBar1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles HScrollBar1.Scroll
Dim HScrollBar1 As HScrollBar = DirectCast(sender, HScrollBar)
Dim Command As String
Command = String.Format("seek {0} to {1}", "MySound", HScrollBar1.Value)
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("play {0}", "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
End Sub
このコードに付け足してもらったり修正して頂きたいです。
どうも、最初から読んでいると、ご自分でほとんどコードを書いてないようですが。。。
自分のやりたいことに使っているコントロールの1つ1つのhelpもみましょう。
取り敢えず、Listboxの使い方を理解しましょう。・・これは知らないものを使う時、基本です。
h ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox(v=VS.80).aspx
をよく読んだら時間はかかりますがなんとなくわかりますし、実験しながら読むともっと
よくわかります。
>2、表示させた音楽ファイルをダブルクリックしたら再生されるようにする。
はdoubleclickイベントの時に、
・選択されているファイル名を取得
・再生処理
すればよいだけですから、listboxの基本的な使い方を理解すれば、これまで頂いているソースのごく簡単な応用でできますよ。
さらに言うとこのサイトでは
ht tp://homepage1.nifty.com/rucio/main/dotnet/Samples/SmpleCnt.htm
に丁寧なサンプルも書いてくれてますから、このサンプルを利用させて頂かない手はありません。