OpenFileDialogクラスを使うことにより、「ファイルを開く」ダイアログボックスを表示させることができます。
OpenFileDialogクラスの簡単な使い方を以下に示します。(ここでは説明のために、ShowDialogメソッドを呼び出す前にいろいろなプロパティを設定していますが、デフォルトでよい場合は必要ありません。)
'OpenFileDialogクラスのインスタンスを作成 Dim ofd As New OpenFileDialog() 'はじめのファイル名を指定する 'はじめに「ファイル名」で表示される文字列を指定する ofd.FileName = "default.html" 'はじめに表示されるフォルダを指定する '指定しない(空の文字列)の時は、現在のディレクトリが表示される ofd.InitialDirectory = "C:\" '[ファイルの種類]に表示される選択肢を指定する '指定しないとすべてのファイルが表示される ofd.Filter = "HTMLファイル(*.html;*.htm)|*.html;*.htm|すべてのファイル(*.*)|*.*" '[ファイルの種類]ではじめに選択されるものを指定する '2番目の「すべてのファイル」が選択されているようにする ofd.FilterIndex = 2 'タイトルを設定する ofd.Title = "開くファイルを選択してください" 'ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする ofd.RestoreDirectory = True '存在しないファイルの名前が指定されたとき警告を表示する 'デフォルトでTrueなので指定する必要はない ofd.CheckFileExists = True '存在しないパスが指定されたとき警告を表示する 'デフォルトでTrueなので指定する必要はない ofd.CheckPathExists = True 'ダイアログを表示する If ofd.ShowDialog() = DialogResult.OK Then 'OKボタンがクリックされたとき、選択されたファイル名を表示する Console.WriteLine(ofd.FileName) End If
//OpenFileDialogクラスのインスタンスを作成 OpenFileDialog ofd = new OpenFileDialog(); //はじめのファイル名を指定する //はじめに「ファイル名」で表示される文字列を指定する ofd.FileName = "default.html"; //はじめに表示されるフォルダを指定する //指定しない(空の文字列)の時は、現在のディレクトリが表示される ofd.InitialDirectory = @"C:\"; //[ファイルの種類]に表示される選択肢を指定する //指定しないとすべてのファイルが表示される ofd.Filter = "HTMLファイル(*.html;*.htm)|*.html;*.htm|すべてのファイル(*.*)|*.*"; //[ファイルの種類]ではじめに選択されるものを指定する //2番目の「すべてのファイル」が選択されているようにする ofd.FilterIndex = 2; //タイトルを設定する ofd.Title = "開くファイルを選択してください"; //ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする ofd.RestoreDirectory = true; //存在しないファイルの名前が指定されたとき警告を表示する //デフォルトでTrueなので指定する必要はない ofd.CheckFileExists = true; //存在しないパスが指定されたとき警告を表示する //デフォルトでTrueなので指定する必要はない ofd.CheckPathExists = true; //ダイアログを表示する if (ofd.ShowDialog() == DialogResult.OK) { //OKボタンがクリックされたとき、選択されたファイル名を表示する Console.WriteLine(ofd.FileName); }
補足:InitialDirectoryプロパティには、「ドキュメント」や「ピクチャ」などのフォルダを指定する機会が多いと思います。このような特殊なフォルダのパスを取得する方法は、「特殊ディレクトリのパスを取得する」で説明しています。
複数のファイルを選択できるようにするには次のようにMultiselectプロパティをTrueにします。
'OpenFileDialogクラスのインスタンスを作成 Dim ofd As New OpenFileDialog() '複数のファイルを選択できるようにする ofd.Multiselect = True 'ダイアログを表示する If ofd.ShowDialog() = DialogResult.OK Then 'OKボタンがクリックされたとき、選択されたファイル名をすべて表示する Dim fn As String For Each fn In ofd.FileNames Console.WriteLine(fn) Next End If
//OpenFileDialogクラスのインスタンスを作成 OpenFileDialog ofd = new OpenFileDialog(); //複数のファイルを選択できるようにする ofd.Multiselect = true; //ダイアログを表示する if (ofd.ShowDialog() == DialogResult.OK) { //OKボタンがクリックされたとき、選択されたファイル名をすべて表示する foreach (string fn in ofd.FileNames) { Console.WriteLine(fn); } }
OpenFileDialogクラスでは選択されたファイルのパスだけでなく、そのファイルのStreamも簡単に取得することができます。以下にその例を示します。
'OpenFileDialogクラスのインスタンスを作成 Dim ofd As New OpenFileDialog() 'ダイアログを表示する If ofd.ShowDialog() = DialogResult.OK Then 'OKボタンがクリックされたとき、選択されたファイルを読み取り専用で開く Dim stream As System.IO.Stream stream = ofd.OpenFile() If Not (stream Is Nothing) Then '内容を読み込み、表示する Dim sr As New System.IO.StreamReader(stream) Console.WriteLine(sr.ReadToEnd()) '閉じる sr.Close() stream.Close() End If End If
//OpenFileDialogクラスのインスタンスを作成 OpenFileDialog ofd = new OpenFileDialog(); //ダイアログを表示する if (ofd.ShowDialog() == DialogResult.OK) { //OKボタンがクリックされたとき、選択されたファイルを読み取り専用で開く System.IO.Stream stream; stream = ofd.OpenFile(); if (stream != null) { //内容を読み込み、表示する System.IO.StreamReader sr = new System.IO.StreamReader(stream); Console.WriteLine(sr.ReadToEnd()); //閉じる sr.Close(); stream.Close(); } }