どうも!リョクちゃです。
今回は、ファイルダイアログといった機能をつかって、
パソコンに保存されているファイルを選択し、
読み込んだ結果をコンボボックスに追加する方法を紹介していきます。
ファイルダイアログって、
“こんなもんなんだ”といったイメージをつかんでいただけたらなと思います。
ちなみに前回はこちら、
目次
準備編:フォームの作成
今回は下のようなフォーム画面を作成します。
ちなみに筆者の環境は、
- VisualStudio2019
- Windows 10 64bit
- .Net Framework 4.5.1
です。
アプリケーションの目的
ボタンを押すことでファイルダイアログが開き、適当なテキストファイルを選択します。
選択したファイルを読み込み、ファイル内の内容をコンボボックスに出力することを
目的とします。
→ あらかじめコンボボックスに表示したい内容をテキストファイルに持たせておく場合に
使えるテクニックになるかと思います。
プログラム編
ファイルダイアログとは
ファイルダイアログは、ファイルを開く際や保存する際に
表示されるウィンドウのことを呼びます。
例えば、下のようなウィンドウがファイルダイアログと呼ばれます。
ファイルダイアログを使ってみる
ファイルダイアログを使うには、
OpenFileDialogクラスを使います。
使い方としては、
この作成した変数を使って、ファイルダイアログを開く際の
各パラメータを設定していきます。
主なパラメータとしては、
- 最初に表示されるデフォルトのファイル名
- 最初に表示されるデフォルトのフォルダ名
- 読込みたいファイルの種類
- ファイルダイアログのタイトル
- ファイルダイアログを閉じる前に現在のフォルダの復元可否
になります。
他にもパラメータはありますので、
個々の作成するアプリケーションによって都度設定をいじってみてください。
ここまでを実際にコード化してみると下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Public Class TestFileDialog ''' <summary> ''' ボタンを押したら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' ファイルダイアログを開く変数を作成しインスタンス化 Dim testFileDialog As New OpenFileDialog() ' 各パラメータを設定していきます ' 最初に表示されるデフォルトのファイル名を設定 testFileDialog.FileName = "default.txt" ' 最初に表示されるデフォルトのフォルダ名を設定 testFileDialog.InitialDirectory = "C:/" ' 読込むファイルの種類を設定 testFileDialog.Filter = "テキスト文書" & "|" & "*.txt" ' ファイルダイアログのタイトルを設定 testFileDialog.Title = "読込みたいファイルを選択してください。" ' ファイルダイアログを閉じる前に現在のフォルダを復元するかしないか testFileDialog.RestoreDirectory = True End Sub End Class |
このようになります。
ここで、読み込むファイルの種類を設定に注目すると、
これはファイルダイアログのファイルの種類に表示される項目を設定しています。
今回はテキストファイルだけを表示するように設定しています。
他にもcsvやtsvといったファイルを設定することも可能です。
その場合は、ファイルごとに垂直バー(|)で区切ります。
例えば、csvファイルを追加したい場合
1 2 |
' 読込むファイルの種類を設定 testFileDialog.Filter = "テキスト文書" & "|" & "*.txt" & "|" & "CSVファイル" & "|" & "*.csv" |
このように書くことでファイルの種類の項目を増やせます。
ファイルの項目 一例
選択されたファイルを読込み、コンボボックスへ追加
最後に選択されたファイルを読込み、結果をコンボボックスへ追加していきます。
ファイルの読み込みについては、
System.IO.StreamReaderを使います。
これについては下の記事を参照ください。
ファイルダイアログ内で選択したファイルを読込むには、
開くボタンを押す必要があります。
ここで押されたことをパソコンには検知させてあげないといけません。
これについては、ボタンが押されたかどうかの結果を戻り値として返す
DialogResultを使います。
以前にメッセージボックスで記事にした際にも、紹介した内容になります。
詳細はこちらを参照ください。
ファイルダイアログでは、押されたかどうかの戻り値を、
でファイルダイアログが閉じられたときに戻り値を受け取るようにします。
実際にコード化すると
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 TestFileDialog ''' <summary> ''' ボタンを押したら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' ファイルダイアログを開く変数を作成しインスタンス化 Dim testFileDialog As New OpenFileDialog() ' 各パラメータを設定していきます ' 最初に表示されるデフォルトのファイル名を設定 testFileDialog.FileName = "default.txt" ' 最初に表示されるデフォルトのフォルダ名を設定 testFileDialog.InitialDirectory = "C:/" ' 読込むファイルの種類を設定 testFileDialog.Filter = "テキスト文書" & "|" & "*.txt" ' ファイルダイアログのタイトルを設定 testFileDialog.Title = "読込みたいファイルを選択してください。" ' ファイルダイアログを閉じる前に現在のフォルダを復元するかしないか testFileDialog.RestoreDirectory = True ' ファイルダイアログを開く ' 読込みたいファイルを選択し、開く(OK)ボタンが押されたら If testFileDialog.ShowDialog() = DialogResult.OK Then ' 出力ウィンドウ(VisualStudio)に選択されたファイル名を表示 Console.WriteLine(testFileDialog.FileName) 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 31 32 33 34 35 36 37 38 |
Public Class TestFileDialog ''' <summary> ''' ボタンを押したら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' ファイルダイアログを開く変数を作成しインスタンス化 Dim testFileDialog As New OpenFileDialog() ' 各パラメータを設定していきます ' 最初に表示されるデフォルトのファイル名を設定 testFileDialog.FileName = "default.txt" ' 最初に表示されるデフォルトのフォルダ名を設定 testFileDialog.InitialDirectory = "C:/" ' 読込むファイルの種類を設定 testFileDialog.Filter = "テキスト文書" & "|" & "*.txt" ' ファイルダイアログのタイトルを設定 testFileDialog.Title = "読込みたいファイルを選択してください。" ' ファイルダイアログを閉じる前に現在のフォルダを復元するかしないか testFileDialog.RestoreDirectory = True ' ファイルダイアログを開く ' 読込みたいファイルを選択し、開く(OK)ボタンが押されたら If testFileDialog.ShowDialog() = DialogResult.OK Then ' 出力ウィンドウ(VisualStudio)に選択されたファイル名を表示 Console.WriteLine(testFileDialog.FileName) ' ファイルが選択されていない場合を考慮して If testFileDialog.FileName <> "" Then ' ファイルを読み込んでコンボボックスへ追加をしていく Dim sr As New System.IO.StreamReader(testFileDialog.FileName) ' ファイル内を1行ずつ読み込んで、結果をコンボボックスへ格納していく While sr.Peek >= 0 Me.ComboBox1.Items.Add(sr.ReadLine) End While End If End If End Sub End Class |
これで完成です。
アプリケーションを実行していきます。
読込みボタンを押した後の画面です。
今回は、sample_2.txtを読み込んでいきます。
sample_2.txtを選択
読込み完了後のコンボボックス
まとめ
ファイルダイアログを使い方を例を交えて解説していきました。
イメージをつかんでいただければなと思います。
ぜひ、アプリケーションを作る際の参考にしていただければ。
最後までご覧いただきありがとうございます。
・こちらの書籍を参考にVB.Net勉強しています。