既定ではOpenFileDialogは1つのファイルしか選択することができません。
一度に複数のファイルを選択できるようにするにはMultiselectプロパティにTrueを設定します(既定ではFalse)。
ダイアログで選択されたファイルはFileNamesプロパティで参照することができます。
FileNamesプロパティはString型の配列なので、サンプルに示すようにFor Each(C#ではforeach)などで取り出して使用します。
下記は複数のファイルを選択できるようにする例です。
フォーム内にある[複数ファイル選択可]チェックボックスにチェックを付けると、複数ファイルを選択できるダイアログが開きます。
サンプルの画面は下記のようにデザインしました。
VBの例
' [ファイルの選択]ボタンクリック時の処理 Private Sub btnOpenDialog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenDialog.Click '★★★複数のファイルを選択できるようにするかどうかの設定★★★ OpenFileDialog1.Multiselect = chkMultiSelect.Checked 'フィルターの設定 OpenFileDialog1.Filter = "画像ファイル|*.bmp;*.gif;*.png" 'ダイアログボックスの表示 If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then 'リストボックスの初期化 lstFiles.Items.Clear() '選択されたファイルをテキストボックスに表示する For Each strFilePath As String In OpenFileDialog1.FileNames 'ファイルパスからファイル名を取得 Dim strFileName As String = IO.Path.GetFileName(strFilePath) 'リストボックスにファイル名を表示 lstFiles.Items.Add(strFileName) Next End If End Sub
C#の例
// [ファイルの選択]ボタンクリック時の処理 private void btnOpenDialog_Click(object sender, EventArgs e) { // ★★★複数のファイルを選択できるようにするかどうかの設定★★★ openFileDialog1.Multiselect = chkMultiSelect.Checked; // フィルターの設定 openFileDialog1.Filter = "画像ファイル|*.bmp;*.gif;*.png"; // ダイアログボックスの表示 if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { // リストボックスの初期化 lstFiles.Items.Clear(); // 選択されたファイルをテキストボックスに表示する foreach (string strFilePath in openFileDialog1.FileNames) { // ファイルパスからファイル名を取得 string strFileName = System.IO.Path.GetFileName(strFilePath); // リストボックスにファイル名を表示 lstFiles.Items.Add(strFileName); } } }
実行例
Please follow and like us:
コメント