どうも!リョクちゃです。
今回は、リストボックスと呼ばれるコントロールについて紹介をしていきます。
例えば、学校の行事で遠足があります。
遠足には遠足のしおりが用意されており、この中には持ち物リストがあると仮定します。
こういったリストを、既にあるものに対してアプリケーションで見るというのは
なかなか考えにくいですが、仮に遠足のしおりがアプリケーションでも
見られるとなった場合はどうでしょうか?
そんな時にリストボックスが実は使えたりします、
そんなわけで使い方を簡単に例を交えて紹介していきます。
(前置きが長くなりました……。)
ちなみに前回はこちら
目次
準備編:フォームを作成
最初に準備として、下のようなフォームを作成します。
今回は、テーマとして遠足のしおりというファイルが渡されます。
このファイルを使ってリストボックスの使い方を紹介していきます。
これをボタンを押すことで内容を読取り、読み取った内容を
持ち物リスト(ListBox)に表示していきます。
ちなみに遠足のしおりファイルの内容は、下のような内容になっています。
このファイルはデスクトップ上に保存されているものとします。
ちなみに筆者の環境は、
- VisualStudio2019
- Windows 10 64bit
- .Net Framework 4.5.2
です。
遠足のしおり(テキストファイル)を読み込む
最初に遠足のしおりを読み込みましょう。
テキストファイルを読み込むには、
を使います。
コードは下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Public Class TestEnsoku Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim sr As System.IO.StreamReader = Nothing ' 遠足のしおりの有無をチェックする If System.IO.File.Exists("C:/Users/ryoku/Desktop/Shiori.txt") Then ' あれば処理をする ' インスタンスを作成 sr = New System.IO.StreamReader("C:/Users/ryoku/Desktop/Shiori.txt") ' ファイルを読み込む While sr.Peek >= 0 End While End If End Sub End Class |
ここまででファイルの読み込みができるようになります。
リストボックスへ読み込んだ内容を追加していく
それでは、ファイルの内容を読み込んで行く中で、
リストボックスへ追加をしていきます。
リストボックスへ追加するには、
と書くことで追加することができます。
実際にコードを書いてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Public Class TestEnsoku Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim sr As System.IO.StreamReader = Nothing ' 遠足のしおりの有無をチェックする If System.IO.File.Exists("C:/Users/ryoku/Desktop/Shiori.txt") Then ' あれば処理をする ' インスタンスを作成 sr = New System.IO.StreamReader("C:/Users/ryoku/Desktop/Shiori.txt") ' ファイルを読み込む While sr.Peek >= 0 ' リストボックスへファイルの内容を追加 Me.ListBox1.Items.Add(sr.ReadLine) End While End If End Sub End Class |
これを実行すると、下図のようになります。
リストボックスへ内容が追加されたのがわかります。
リストボックスで選択された内容を表示する
それでは、追加されたリストボックスの内容を選択したら、
その内容がメッセージボックスに表示されるといった事をしていきます。
まず、リストボックスの内容が選択されたもしくは選択した場合は、
リストボックスのイベントが発生します。
今回はこのイベントを利用して選択された内容を表示します。
まず、リストボックスの選択されたときに発生するイベントをコードエディタに記述します。
このイベントを選択した状態で、ダブルクリックを押すとコードエディタに
自動でイベントが追加されます。
追加されると下のようなコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Public Class TestEnsoku Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim sr As System.IO.StreamReader = Nothing ' 遠足のしおりの有無をチェックする If System.IO.File.Exists("C:/Users/ryoku/Desktop/Shiori.txt") Then ' あれば処理をする ' インスタンスを作成 sr = New System.IO.StreamReader("C:/Users/ryoku/Desktop/Shiori.txt") ' ファイルを読み込む While sr.Peek >= 0 ' リストボックスへファイルの内容を追加 Me.ListBox1.Items.Add(sr.ReadLine) End While End If End Sub ''' <summary> ''' 内容が選択されたら発生するイベント ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged End Sub End Class |
追加されたイベントに、選択された内容を表示するコードを書きます。
選択された内容を取得するには、
を使います。
コードは下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Public Class TestEnsoku Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim sr As System.IO.StreamReader = Nothing ' 遠足のしおりの有無をチェックする If System.IO.File.Exists("C:/Users/ryoku/Desktop/Shiori.txt") Then ' あれば処理をする ' インスタンスを作成 sr = New System.IO.StreamReader("C:/Users/ryoku/Desktop/Shiori.txt") ' ファイルを読み込む While sr.Peek >= 0 ' リストボックスへファイルの内容を追加 Me.ListBox1.Items.Add(sr.ReadLine) End While End If End Sub ''' <summary> ''' 内容が選択されたら発生するイベント ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged MessageBox.Show(Me.ListBox1.SelectedItem) End Sub End Class |
これを実行すると、
持ち物リスト内の内容を選択すると、メッセージボックスで表示がされるようになります。
番外編:リストボックスのアイテム追加する方法
リストボックスへアイテムを追加する方法として、
ListBox.Items.Add(追加したいアイテム)
については触れましたが、位置を指定して追加する方法があります。
それが、
があります。
これを先ほどのAddの代わりに書くと、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
Public Class TestEnsoku Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim sr As System.IO.StreamReader = Nothing ' 遠足のしおりの有無をチェックする If System.IO.File.Exists("C:/Users/ryoku/Desktop/Shiori.txt") Then ' あれば処理をする ' インスタンスを作成 sr = New System.IO.StreamReader("C:/Users/ryoku/Desktop/Shiori.txt") ' ファイルを読み込む While sr.Peek >= 0 ' リストボックスへファイルの内容を追加 ' Me.ListBox1.Items.Add(sr.ReadLine) ' リストボックスへ位置を指定して追加 Me.ListBox1.Items.Insert(Me.ListBox1.Items.Count, sr.ReadLine) End While End If End Sub ''' <summary> ''' 内容が選択されたら発生するイベント ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged MessageBox.Show(Me.ListBox1.SelectedItem) End Sub End Class |
Me.ListBox1.Countとすることで、追加した内容が必ず最後に来るようにしています。
Insertは、好きな位置に追加することができるので使い方によっては、使えるメソッドです。
まとめ
簡単にリストボックス牡使い方を例を交えて紹介していきました。
リストボックスへのアイテム追加や選択された表示する方法を中心にコードを書きましたが、
他にも色々な使い方が存在します。これについては別途紹介出来たらなと思います。
リストボックスへアイテムを追加するには
リストボックスで選択されたアイテムを取得するには
リストボックスに位置を指定して追加するには
ご覧いただきありがとうございます。
・こちらの書籍を参考にVB.Net勉強しています。