【C#】オープンファイルダイアログ-複数ファイル選択

ファイルを開く際、ダイアログを表示してファイルを選ばせる方法は「【C#】オープンファイルダイアログ-初期フォルダの設定」を参照下さい。

ここでは、下記ダイアログのように複数のファイルを選択可能にし、ファイル名を取得する方法を記載します。(デフォルトは1ファイルのみ)




 複数ファイル選択


複数ファイルの選択を可能にする場合には~.Multiselect = trueを用い、ダイアログを表示(ShowDialog)する前に記述します。

 ▽ 1ファイルのみ選択可能にする場合
OFD.Multiselect = false;

 ▽ 複数ファイルを選択可能にする場合
OFD.Multiselect = true;



 ファイル名の取得


ファイル名を取得するには、1ファイルの場合は~.FileNameを用い、複数ファイルの場合は~.FileNamesを用い、ファイルが選択された場合(~.ShowDialog() == DialogResult.OK)に記述します。

複数ファイルの場合に ~.FileName を使うと、先頭の1ファイルのみ取得できます。

 ▽ 1ファイルの場合
/* ダイアログを表示し「開く」場合 */
if (OFD.ShowDialog() == DialogResult.OK)
{
  /* ファイル名を表示する */
  MessageBox.Show(OFD.FileName);
}

 ▽ 複数ファイルの場合(1ファイルでも可)
/* ダイアログを表示し「開く」場合 */
if (OFD.ShowDialog() == DialogResult.OK)
{
  /* ファイル名を表示する */
  foreach ( string strFileName in OFD.FileNames )
  {
    MessageBox.Show(strFileName);
  }
}

一連の処理を通して記述すると下記となります。

/* インスタンスの初期化 */
OpenFileDialog OFD = new OpenFileDialog();

/* タイトルの設定 */
OFD.Title = "Excelファイルを選択してください";

/* 初期フォルダ:マイドキュメント */
OFD.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

/* フィルター:Text、Excel */
OFD.Filter = "Text Files (*.txt)|*.txt|Excel File(*.xls;*.xlsx)|*.xls;*.xlsx";

/* フィルター初期値:Excel */
OFD.FilterIndex = 2;

/* ファイルの存在チェックをする */
OFD.CheckFileExists = true;

/* 複数ファイルを選択可 */
OFD.Multiselect = ture;

/* ダイアログを表示し「開く」場合 */
if (OFD.ShowDialog() == DialogResult.OK)
{
  /* ファイル名を表示する */
  foreach ( string strFileName in OFD.FileNames )
  {
    MessageBox.Show(strFileName);
  }
}

管理人 について

趣味:映画鑑賞・音楽鑑賞・ゲーム・旅行 仕事:会社員(IT関連)
カテゴリー: C#, システム開発 パーマリンク