[ ホーム ][ VC# メニュー ]
目次へ戻ります
Visual C# リファレンス


VC# ファイルオープンダイアログ 操作 ( OpenFileDialog )

.NET Framework 4.5、4、3.5、3.0、2.0、1.1、1.0
.NET Framework Client Profile 4、3.5 SP1

using System.Windows.Forms;


お品書き
● サンプル関数ファイルオープンダイアログを表示して、選択ファイル名を返します。
● OpenFileDialog.ShowDialog() メソッドファイルオープンダイアログを表示します。
● AddExtension プロパティ自動的に拡張子を付けるかどうかを設定します。
● CheckFileExists プロパティ存在しないファイル名の場合に 警告を表示するかどうかを設定します。
● CheckPathExists プロパティ存在しないパスの場合に 警告を表示するかどうかを設定します。
● DefaultExt プロパティ既定の拡張子を設定します。
● FileName プロパティ選択されたファイル名を取得します。初期値の設定もできます。
● FileNames プロパティ複数の選択されたファイル名を取得します。
● Filter プロパティ[ファイルの種類] に表示されるフィルタ文字列を設定します。
● FilterIndex プロパティフィルタの規定値を設定します。
● InitialDirectory プロパティ初期フォルダを設定します。
● Multiselect プロパティ複数のファイルを選択できるかどうかを設定します。
● Title プロパティキャプションのタイトルを設定します。


● サンプル 関数

【機能】ファイルを開くダイアログを開いて、ファイル名を取得します。
【書式】string filename = openFileDialog();
【戻り値】選択された フルパス ファイル名の string を返します。キャンセル時は null を返します。
【サンプル】 //
// [ファイルを開く] ボタンをクリックした
//
private void button1_Click(object sender, EventArgs e)
{
    string filename = openFileDialog(); // EXCELファイル名取得
    if (filename != null)
    {
        MessageBox.Show("以下のファイルを選択しました。¥n¥n" + filename);
    }
    else
    {
        MessageBox.Show("ファイル選択がキャンセルされました。");
    }
}

//
// EXCELファイル用 オープンファイルダイアログ メソッド
//
// [書式] string filename = openFileDialog();
// [戻り値] 選択されたフルパスファイル名 (キャンセル時は null)
//

private string openFileDialog()
{
    string filename = null;
    OpenFileDialog ofd = new OpenFileDialog();

    // キャプションのタイトル
    ofd.Title = "EXCELファイルの選択画面";

    // 初期フォルダを マイドキュメント にする
    ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

    // ファイル選択は EXCEL(CSV)ファイルでフィルタ
    ofd.Filter = "Excel ファイル (*.xls; *.csv)|*.xls; *.csv|すべてのファイル (*.*)|*.*";

    // ダイアログ オープン
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        filename = ofd.FileName;
    }
    return filename;
}

▲TOP


● DialogResult OpenFileDialog.ShowDialog() メソッド

【機能】ファイルオープンダイアログを表示します。
【書式】OpenFileDialog ofd = new OpenFileDialog();
DialogResult result = ofd.ShowDialog();
【説明】ダイアログを表示します。ofd.FileName で選択されたファイル名を取得できます。
【戻り値】DialogResult.OK      : [OK] ボタンで戻った。
DialogResult.Cancel : [キャンセル] ボタンで戻った。
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "EXCELファイルの選択画面";
ofd.Filter = "Excel ファイル (*.xls; *.csv)|*.xls; *.csv";
ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
if (ofd.ShowDialog() == DialogResult.OK)
{
    string filename = ofd.FileName;
}
▲TOP


● bool FileDialog.AddExtension プロパティ

【機能】ユーザーが拡張子を指定しない場合、ファイル名に自動的に拡張子を付けるかどうかを設定します。
【 値 】true  : 拡張子を付ける (規定値)
false : 拡張子を付けない
【説明】既存のファイルに一致する フィルタ(FileDialog.Filter) の最初の拡張子を付けます。
フィルタに一致するファイルがない場合、FileDialog.DefaultExt プロパティで指定された拡張子を付けます。
※ false の場合も、FileDialog.Filter、FileDialog.DefaultExt の指定があれば、拡張子を付加します。
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Excel ファイル (*.xls; *.csv)|*.xls; *.csv";
ofd.DefaultExt = "csv";
ofd.AddExtension = true;
ofd.ShowDialog();
string filename = ofd.FileName;
sample.xls と sample.csv が存在する場合
"sample" 入力時 →
"C:¥Users¥<ユーザ名>¥Documents¥sample.xls"
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.AddExtension = false;
ofd.Filter = "";
ofd.DefaultExt = "";
ofd.CheckFileExists = false;
ofd.ShowDialog();
string filename = ofd.FileName;
"sample" 入力時 →"C:¥Users¥<ユーザ名>¥Documents¥sample"
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.AddExtension = false;
ofd.Filter = "Excel ファイル (*.xls; *.csv)|*.xls; *.csv";
ofd.DefaultExt = "txt";
ofd.CheckFileExists = false;
ofd.ShowDialog();
string filename = ofd.FileName;
"sample" 入力時 →"C:¥Users¥<ユーザ名>¥Documents¥sample.xls"
▲TOP


● bool OpenFileDialog.CheckFileExists プロパティ

【機能】存在しないファイル名をユーザーが指定した場合に、警告を表示するかどうかを設定します。
【 値 】true  : 警告を表示する (規定値)
false : 警告を表示しない
【説明】存在しないファイル名を入力時、trueの時は、警告を表示してダイアログは閉じません。false時は、存在しないファイル名も返せるようになります。
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Excel ファイル (*.xls; *.csv)|*.xls; *.csv";
ofd.CheckFileExists = true;
ofd.ShowDialog();
string filename = ofd.FileName;
存在しないファイル名("sumple.xls")を入力時 →「sumple.xls ファイルが見つかりません。ファイル名を確認して再実行してください」
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Excel ファイル (*.xls; *.csv)|*.xls; *.csv";
ofd.CheckFileExists = false;
ofd.ShowDialog();
string filename = ofd.FileName;
存在しないファイル名("sumple.xls")を入力時 →"C:¥Users¥<ユーザ名>¥Documents¥sumple.xls"
▲TOP


● bool FileDialog.CheckPathExists プロパティ

【機能】存在しないパスをユーザーが指定した場合に、警告を表示するかどうかを設定します。
【 値 】true  : 警告を表示する (規定値)
false : 警告を表示しない
【説明】存在しないパスを入力時、trueの時は、警告を表示してダイアログは閉じません。false時は、存在しないパスも返せるようになります。
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Excel ファイル (*.xls; *.csv)|*.xls; *.csv";
ofd.CheckPathExists = true;
ofd.ShowDialog();
string filename = ofd.FileName;
存在しないパス("c:¥work¥sample.xls")を入力時 →「c:¥work¥sample.xls パスが見つかりません。パスを確認して再実行してください」
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Excel ファイル (*.xls; *.csv)|*.xls; *.csv";
ofd.CheckPathExists = false;
ofd.ShowDialog();
string filename = ofd.FileName;
存在しないパス("c:¥work¥sample.xls")を入力時 →「c:¥work¥sample.xls パスが見つかりません。パスを確認して再実行してください」
えっ!?
▲TOP


● string FileDialog.DefaultExt プロパティ

【機能】既定の拡張子を設定します。
【 値 】規定値 : ""
【説明】※ FileDialog.Filter が優先されます。
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = false;
ofd.DefaultExt = "csv";
ofd.ShowDialog();
string filename = ofd.FileName;
sample.xls と sample.csv が存在する場合
"sample" を入力時 →
"C:¥Users¥<ユーザ名>¥Documents¥sample.csv"
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = false;
ofd.Filter = "Excel ファイル (*.xls; *.csv)|*.xls; *.csv";
ofd.DefaultExt = "csv";
ofd.ShowDialog();
string filename = ofd.FileName;
sample.xls と sample.csv が存在する場合
"sample" を入力時 →
"C:¥Users¥<ユーザ名>¥Documents¥sample.xls"
▲TOP


● string FileDialog.FileName プロパティ

【機能】選択されたファイル名を取得します。初期値をセットすることもできます。
【 値 】選択されたフルパスのファイル名
[キャンセル] や [X] ボタンで選択しなかった場合は、"" が返ります。
【説明】 ※ [キャンセル] が押されたかどうかを判断するには、一般には以下のようになります。
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
    // 処理
    string filename = ofd.FileName;
}
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.FileName = "default.xls";
ofd.ShowDialog();
string filename = ofd.FileName;
"sample.xls" を選択時 →"C:¥Users¥<ユーザ名>¥Documents¥sample.xls"
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog();
string filename = ofd.FileName;
[キャンセル] や [X] で戻った →""
▲TOP


● string FileDialog.FileNames プロパティ

【機能】複数の選択されたファイル名を取得します。
【 値 】選択されたフルパスのファイル名の配列
[キャンセル] や [X] ボタンで選択しなかった場合は、FileDialog.FileNames.Length = 0 が返ります。
【説明】OpenFileDialog.Multiselect が true に設定されている必要があります。
※ [キャンセル] が押されたかどうかを判断するには、一般には以下のようになります。
OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = true;
if (ofd.ShowDialog() == DialogResult.OK)
{
    // 処理
    string filename[] = ofd.FileNames;
}
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = true;
ofd.ShowDialog();
string filename[] = ofd.FileNames;
sample.xls と sample.csv を選択時
filename[0] →
filename[1] →
"C:¥Users¥<ユーザ名>¥Documents¥sample.xls"
"C:¥Users¥<ユーザ名>¥Documents¥sample.csv"
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = true;
ofd.ShowDialog();
string filename[] = ofd.FileNames;
[キャンセル] や [X] で戻った
filename.Length →
0
▲TOP


● string FileDialog.Filter プロパティ

【機能】 [ファイルの種類] に表示されるフィルタ文字列を設定します。
【 値 】規定値 : ""
【説明】フィルタの説明とフィルタパターンを縦棒 (|) で区切って設定します。
例) "EXCELファイル (*.xls)|*.xls"

複数の拡張子がある場合は セミコロン(;)区切って続けます。
例) "EXCELファイル (*.xls; *.csv)|*.xls;*.csv"

複数のフィルタがある場合は さらに縦棒 (|)で区切って続けます。
例) "EXCELファイル (*.xls; *.csv)|*.xls;*.csv|テキストファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*"

また、FileDialog.FilterIndex で、何番目のフィルタを規定値にするか設定できます。
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "EXCELファイル (*.xls; *.csv)|*.xls;*.csv|すべてのファイル (*.*)|*.*";
ofd.FilterIndex = 1;
ofd.ShowDialog();
string filename = ofd.FileName;
▲TOP


● int FileDialog.FilterIndex プロパティ

【機能】フィルタの規定値を設定します。
【 値 】規定値 : 1
【説明】FileDialog.Filter で設定したフィルタの何番目を規定値にするかを 1から始まる番号で指定します。
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "EXCELファイル (*.xls; *.csv)|*.xls;*.csv|すべてのファイル (*.*)|*.*";
ofd.FilterIndex = 2;
ofd.ShowDialog();
string filename = ofd.FileName;
▲TOP


● string FileDialog.InitialDirectory プロパティ

【機能】初期フォルダを設定します。
【 値 】規定値 : ""
【説明】設定しなければ、以下のいずれかのフォルダが設定されます。
・プログラムで前に使用されていたパス。前回アクセスしたディレクトリまたは前回のファイル操作から取得されます。
・アプリケーション設定、レジストリ、アプリケーション内の文字列リソースなど、永続的情報源から読み込まれたパス。
・Program Files、マイドキュメント、マイミュージックなど、標準的な Windows のシステムパスまたはユーザーパス。
・起動ディレクトリなど、現在のアプリケーションに関連するパス。
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
ofd.ShowDialog();
string filename = ofd.FileName;
▲TOP


● bool OpenFileDialog.Multiselect プロパティ

【機能】複数のファイルを選択できるかどうかを設定します。
【 値 】true  : 複数選択を許可する
false : 複数選択を許可しない (規定値)
【説明】FileDialog.FileNames で選択されたファイル名を取得できます。
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = true;
ofd.ShowDialog();
string filename[] = ofd.FileNames;
sample.xls と sample.csv を選択時
filename[0] →
filename[1] →
"C:¥Users¥<ユーザ名>¥Documents¥sample.xls"
"C:¥Users¥<ユーザ名>¥Documents¥sample.csv"
▲TOP


● string FileDialog.Title プロパティ

【機能】キャプションのタイトルを設定します。
【 値 】規定値 : ""
【説明】設定しなければ、"開く" が設定されます。
【 例 】 OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "EXCELファイルの選択画面";
ofd.Filter = "EXCELファイル (*.xls; *.csv)|*.xls;*.csv|すべてのファイル (*.*)|*.*";
ofd.ShowDialog();
string filename = ofd.FileName;
▲TOP

目次へ戻ります