既定では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:



コメント