はじめに
Windows Forms アプリケーションで OpenFileDialog を使用する際、ユーザーが選択したファイルが実際に存在するかどうかを確認したい場合があります。そんな時に役立つのが CheckFileExists プロパティです。この記事では、OpenFileDialog の CheckFileExists プロパティについて、初心者の方にもわかりやすく解説します。CheckFileExists プロパティを使うことで、ファイル選択時にファイルの存在を確認し、存在しない場合はエラーメッセージを表示することができます。具体的なコード例を交えながら、その使い方を見ていきましょう。
CheckFileExists プロパティとは?
CheckFileExists プロパティは、OpenFileDialog がユーザーによって入力または選択されたファイルが存在するかどうかをチェックするかどうかを指定するプロパティです。
- true
OpenFileDialog は、ユーザーが入力または選択したファイルが存在するかどうかをチェックし、存在しない場合はエラーメッセージを表示します。 - false (既定値)
ファイルの存在チェックを行いません。
CheckFileExists プロパティの使い方 (コード例)
CheckFileExists を有効にする
CheckFileExists プロパティを true に設定することで、ファイルが存在するかどうかをチェックするように設定できます。
using System;
using System.Windows.Forms;
namespace OpenFileDialogSample
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void openButton_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Title = "ファイルを開く";
openFileDialog.Filter = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*";
openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
// CheckFileExists を有効にする
openFileDialog.CheckFileExists = true;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
MessageBox.Show("選択されたファイル: " + filePath);
}
}
}
}
解説:
openFileDialog.CheckFileExists = true;: CheckFileExists プロパティを true に設定することで、ユーザーがファイルを選択または入力した際に、そのファイルが存在するかどうかがチェックされます。ファイルが存在しない場合は、エラーメッセージが表示され、ダイアログは閉じません。
存在しないファイルを指定した場合の動作
CheckFileExists が true に設定されている状態で、存在しないファイル名を入力または選択して「開く」ボタンをクリックすると、以下のようなエラーメッセージが表示されます。
“ファイル ‘C:\path\to\nonexistent_file.txt’ が見つかりません。ファイル名を確認して再試行してください。”
補足: ファイルの存在確認を手動で行う場合
CheckFileExists を false に設定した場合でも、OpenFileDialog で選択されたファイルの存在を確認することができます。System.IO.File.Exists() メソッドを使用することで、ファイルが存在するかどうかをプログラム内で確認できます。
private void openButton_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Title = "ファイルを開く";
openFileDialog.Filter = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*";
openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
// CheckFileExists は無効のまま
openFileDialog.CheckFileExists = false;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
// ファイルの存在を手動で確認
if (System.IO.File.Exists(filePath))
{
MessageBox.Show("選択されたファイル: " + filePath);
}
else
{
MessageBox.Show("ファイルが存在しません: " + filePath);
}
}
}
解説:
openFileDialog.CheckFileExists = false;
CheckFileExists プロパティを false に設定し、OpenFileDialog 自体はファイルの存在チェックを行いません。
System.IO.File.Exists(filePath)
OpenFileDialog で選択されたファイルパス (filePath) を System.IO.File.Exists() メソッドに渡し、ファイルが存在するかどうかを確認します。
ファイルが存在する場合と存在しない場合で、異なるメッセージを表示します。
まとめ
OpenFileDialog の CheckFileExists プロパティは、ユーザーが選択したファイルが実際に存在するかどうかを確認し、存在しない場合にエラーメッセージを表示するための便利なプロパティです。この記事で紹介したコード例を参考に、CheckFileExists プロパティを効果的に活用し、より堅牢な Windows Forms アプリケーションを作成してください。


コメント