ここではVB.NETで「ファイルを開く」ダイアログボックスを表示する方法について紹介します。
目次
OpenFileDialogクラス
「ファイルを開く」ダイアログボックスを表示するには、OpenFileDialogクラスをインスタンス化して、ShowDialogメソッドでダイアログボックスを表示します。
OpenFileDialogクラスのプロパティ
以下は主なOpenFileDialogクラスのプロパティです。
プロパティ | 説明 |
---|---|
AddExtension | ユーザーが拡張子を省略した場合に、 ダイアログボックスで自動的にファイル名に拡張子を付けるかどうかを示す値を取得または設定します。 拡張子を自動的に付ける場合は「True」(既定値)、付けない場合は「False」を設定します。 |
CheckFileExists | 存在しないファイル名をユーザーが指定した場合に、 ダイアログボックスで警告を表示するかどうかを示す値を取得または設定します。 警告を表示する場合は「True」(既定値)、表示しない場合は「False」 を設定します。 |
CheckPathExists | ユーザーが無効なパスとファイル名を入力した場合に警告を表示するかどうかを指定する値を取得または設定します。 警告を表示する場合は「True」(既定値)、表示しない場合は「False」を設定します。 |
FileName | ダイアログボックスで選択されたファイルの完全なパスを含む文字列を取得または設定します。 |
FileNames | 選択されたファイルごとに 1 つずつファイル名を格納する配列を取得します。 |
Filter | ダイアログボックスに表示されるファイルの種類を決定するフィルター文字列を取得または設定します。 |
FilterIndex | ダイアログボックスで現在選択されているフィルターのインデックスを取得または設定します。 |
InitialDirectory | ダイアログボックスに表示される初期ディレクトリを取得または設定します。 |
Multiselect | ダイアログボックスでユーザーが複数のファイルを選択できるかどうかを示すオプションを取得または設定します。 複数選択の場合は「True」、複数選択不可の場合は「False」(既定値)を設定します。 |
SafeFileName | 選択されたファイルのファイル名のみを格納する文字列を取得します。 |
SafeFileNames | 選択されたファイルごとに 1 つずつ安全なファイル名を格納する配列を取得します。 |
Title | ダイアログボックスのタイトル バーに表示されるテキストを取得または設定します。 |
「ファイルを開く」ダイアログボックスのサンプル
1つのファイルを選択する場合
まず、以下のようなフォームを作成します。テキストボックスにはダイアログボックスで選択した ファイルパスとファイル名を表示させます。
以下はボタンクリックで「ファイルを開く」ダイアログボックスを表示するサンプルです。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using dialogAs New OpenFileDialog()
' プロパティの設定
With dialog
' ダイアログのタイトル
.Title = "ファイルを選択してください"
' 初期ディレクトリ
.InitialDirectory = "C:\temp"
' ファイルのフィルタ
.Filter = "テキストファイル|*.txt;*log|すべてのファイル|*.*"
' 初期表示するファイル名
.FileName = ""
End With
' ダイアログを表示し、戻り値が [OK] の場合は、選択したファイル名を表示する
If dialog.ShowDialog() = DialogResult.OK Then
Me.TextBox1.Text = dialog.FileName
Me.TextBox2.Text = dialog.SafeFileName
End If
End Using
End Sub
実行して [ファイルを開くダイアログボックス] ボタンをクリックするとダイアログボックスが表示されます。
ファイルの種類で「すべてのファイル(*.*)」を選択してみます。
ファイルを選択するとファイル名がテキストボックスにファイルパス(FileName)とファイル名(SafeFileName)が表示されます。
複数のファイルを選択する場合
「ファイルを開く」ダイアログボックスで複数のファイルを選択する場合は、Multiselectプロパティを「True」に設定して、選択されたファイル名を配列として取得します。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' OpenFileDialogクラスのインスタンスを生成する
Using dialog As New OpenFileDialog()
' プロパティの設定
With dialog
' ダイアログのタイトル
.Title = "ファイルを選択してください"
' 初期ディレクトリ
.InitialDirectory = "C:\temp"
' ファイルのフィルタ
.Filter = "テキストファイル|*.txt;*log|すべてのファイル|*.*"
' 初期表示するファイル名
.FileName = ""
' 複数のファイルを選択可能にする
.Multiselect = True
End With
' ダイアログを表示し、戻り値が [OK] の場合は、選択したファイル名を表示する
Dim strName1 As String = String.Empty
Dim strName2 As String = String.Empty
If dialog.ShowDialog() = DialogResult.OK Then
For Each sName As String In dialog.FileNames
strName1 &= sName & " "
Next
Me.TextBox1.Text = strName1
For Each sName As String In dialog.SafeFileNames
strName2 &= sName & " "
Next
Me.TextBox2.Text = strName2
End If
End Using
End Sub
補足
初期ディレクトリをMY Documents(マイドキュメント)にしたい場合は、InitialDirectoryプロパティに「System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)」を設定します。
以上、「ファイルを開く」ダイアログボックスを表示する方法について解説しました。