1.概要
System.Windows.Forms.OpenFileDialog
を使用し、ファイル選択ダイアログから選択したファイルのフルパス情報を取得する方法を記します。
環境
Visual Studio Community 2022
プロジェクトテンプレート:Windows フォーム アプリケーション(.Net Framework)
言語:C#
2.フォーム
サンプルとして上記のようにフォームを構成したとします。
テキストボックスのnameをtextBox1
、
ファイル選択ボタンのnameをbutton1
と仮定します。
3.コード
先にコードを記します。その後詳細を説明します。
/// <summary>
/// ファイル選択ボタンクリック時
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
path = SelectFile();
if(path != string.Empty)
{
textBox1.Text = path;
}
}
/// <summary>
/// ファイル選択
/// </summary>
/// <returns>string:選択されたファイルのフルパス キャンセル時はEmpty</returns>
private string SelectFile()
{
string ret = string.Empty;
//OpenFileDialog
using(OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Title = "ファイル選択ダイアログ";
openFileDialog.Filter = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*";
openFileDialog.InitialDirectory = @"c:\Study\";
//ファイル選択ダイアログを開く
if(openFileDialog.ShowDialog() == DialogResult.OK)
{
ret = openFileDialog.FileName;
}
}
return ret;
}
button1
をクリックするとbutton1_Click()
メソッドが呼び出され、SelectFile()
を呼び出します。
SelectFile()
では、OpenFileDialog
クラスのインスタンスを生成し、いくつかのプロパティ設定を経てShowDialog()
を実行することでファイル選択ダイアログを呼び出しています。
ShowDialog()
が閉じた際、返り値はDialogResult
形式で返却されます。
返り値がDialogResult.OK
だった場合、FileName
プロパティに選択されたファイルのフルパスが格納されているため、メソッド自体の返り値としてその情報を返却しています。
返却されたフルパス情報を、textBox1の表示プロパティであるtextBox.Text
に代入し、表示に反映しています。
4.OpenFileDialogのプロパティ
今回使用しているプロパティの内容を記します。
- Title
- ファイル選択ダイアログ左上のタイトルに表示する文字列です。
- Filter
- 拡張子によるフィルタを指定します。|で区切られた2つを1セットとして、[表示]|[フィルタ内容]と記述します。更にそのフィルタを複数設定する場合は、1セット毎に更に|を挟みます。ちょっと見づらい。
- InitialDirectory
- ダイアログを開いた時に最初に開かれているディレクトリをフルパスで指定します。記述がある場合、開くたびにこのディレクトリから選択を開始します。このプロパティを設定しない場合は、開き直すと以前開いていたディレクトリから開始するため、設定しないほうがいい場合もあります。
実際はこのフルパス情報からStreamReaderなどを用いてファイルを扱うことになります。
OpenFileDialogは、Formを使ったファイル操作の入り口の入り口と言ったところでしょうか。
実際のファイル操作はまたの機会に。