[C#] OpenFileDialogでファイルタイプ(拡張子)を制限する方法
C#でOpenFileDialogを使用してファイルタイプを制限するには、Filter
プロパティを設定します。
このプロパティは、ユーザーが選択できるファイルの種類を指定するためのものです。
Filter
は、表示名と拡張子のペアをセミコロンで区切り、複数のペアをパイプで区切って指定します。
例えば、テキストファイルと画像ファイルを選択可能にする場合、Filter
を”Text Files (*.txt)|*.txt|Image Files (*.png;*.jpg)|*.png;*.jpg”のように設定します。
これにより、ダイアログで選択可能なファイルタイプが制限され、ユーザーが指定された拡張子のファイルのみを選択できるようになります。
ファイルタイプの制限方法
Filterプロパティの設定
OpenFileDialog
を使用する際、特定のファイルタイプを制限するためには、Filter
プロパティを設定します。
このプロパティにより、ユーザーが選択できるファイルの種類を指定できます。
以下は、OpenFileDialog
のFilter
プロパティを設定する基本的な方法です。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "テキストファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
// 選択されたファイルのパスを使用する処理
}
}
}
このコードでは、OpenFileDialog
のFilter
プロパティにテキストファイルとすべてのファイルを指定しています。
ユーザーは、ダイアログでテキストファイルのみを選択できるようになります。
Filterプロパティの書式
Filter
プロパティの書式は以下のようになります。
表示名 | 拡張子 |
---|---|
テキストファイル | *.txt |
画像ファイル | *.jpg;*.png |
PDFファイル | *.pdf |
すべてのファイル | *.* |
この表のように、表示名と拡張子をパイプ|
で区切って指定します。
複数の拡張子を指定する場合は、セミコロン;
で区切ります。
複数のファイルタイプを指定する方法
複数のファイルタイプを指定する場合、Filter
プロパティにそれぞれのファイルタイプを追加します。
以下の例では、テキストファイルと画像ファイルを選択できるように設定しています。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "テキストファイル (*.txt)|*.txt|画像ファイル (*.jpg;*.png)|*.jpg;*.png|すべてのファイル (*.*)|*.*";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
// 選択されたファイルのパスを使用する処理
}
}
}
このコードでは、テキストファイルと画像ファイルの両方を選択できるように設定されています。

ユーザーは、ダイアログでこれらのファイルタイプから選択することができます。
実装例
テキストファイルのみを選択可能にする例
テキストファイルのみを選択できるOpenFileDialog
の実装例を以下に示します。
この例では、ユーザーがテキストファイル.txt
のみを選択できるように設定しています。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "テキストファイル (*.txt)|*.txt";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
// 選択されたテキストファイルのパスを使用する処理
}
}
}
このコードを実行すると、ユーザーはテキストファイルのみを選択できるダイアログが表示されます。
画像ファイルのみを選択可能にする例
次に、画像ファイル(JPEGおよびPNG形式)のみを選択できるようにする例を示します。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "画像ファイル (*.jpg;*.png)|*.jpg;*.png";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
// 選択された画像ファイルのパスを使用する処理
}
}
}
このコードを実行すると、ユーザーはJPEGまたはPNG形式の画像ファイルのみを選択できるダイアログが表示されます。
複数のファイルタイプを選択可能にする例
最後に、テキストファイルと画像ファイルの両方を選択できるようにする例を示します。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "テキストファイル (*.txt)|*.txt|画像ファイル (*.jpg;*.png)|*.jpg;*.png|すべてのファイル (*.*)|*.*";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
// 選択されたファイルのパスを使用する処理
}
}
}
このコードを実行すると、ユーザーはテキストファイルと画像ファイルの両方を選択できるダイアログが表示されます。
これにより、柔軟なファイル選択が可能になります。
応用例
ユーザーが選択したファイルの拡張子を取得する方法
ユーザーが選択したファイルの拡張子を取得するには、Path.GetExtensionメソッド
を使用します。
以下の例では、選択されたファイルの拡張子を取得し、表示する方法を示します。
using System.IO; // Pathクラスを使用するために必要
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "すべてのファイル (*.*)|*.*";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
string extension = Path.GetExtension(filePath); // 拡張子を取得
MessageBox.Show("選択されたファイルの拡張子: " + extension);
}
}
}
このコードを実行すると、選択されたファイルの拡張子がメッセージボックスに表示されます。
選択されたファイルの存在確認
選択されたファイルが実際に存在するかどうかを確認するには、File.Existsメソッド
を使用します。
以下の例では、選択されたファイルの存在を確認し、結果を表示します。
using System.IO; // Fileクラスを使用するために必要
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "すべてのファイル (*.*)|*.*";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
if (File.Exists(filePath)) // ファイルの存在確認
{
MessageBox.Show("選択されたファイルは存在します。");
}
else
{
MessageBox.Show("選択されたファイルは存在しません。");
}
}
}
}
このコードを実行すると、選択されたファイルが存在するかどうかがメッセージボックスで表示されます。
ファイル選択ダイアログのカスタマイズ
OpenFileDialog
の外観や動作をカスタマイズすることも可能です。
以下の例では、初期ディレクトリやタイトルを設定する方法を示します。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "すべてのファイル (*.*)|*.*";
openFileDialog.InitialDirectory = @"C:\Users"; // 初期ディレクトリを設定
openFileDialog.Title = "ファイルを選択してください"; // ダイアログのタイトルを設定
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
// 選択されたファイルのパスを使用する処理
}
}
}
このコードを実行すると、指定した初期ディレクトリとカスタムタイトルを持つファイル選択ダイアログが表示されます。
これにより、ユーザーにとって使いやすいインターフェースを提供できます。
まとめ
この記事では、C#のOpenFileDialog
を使用してファイルタイプを制限する方法について詳しく解説しました。
具体的には、Filter
プロパティの設定方法や、特定のファイルタイプを選択可能にする実装例を紹介しました。
また、ユーザーが選択したファイルの拡張子を取得する方法や、選択されたファイルの存在確認、ダイアログのカスタマイズについても触れました。
これらの知識を活用して、より使いやすいファイル選択機能を実装してみてください。