[Tips][OpenFileDialog] 複数のファイルを選択できる

既定では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);
        }
    }
}

実行例

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください