• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# OpenFileDialog)

C# OpenFileDialogで指定した拡張子以外のファイルが選ばれた際のエラー処理

このQ&Aのポイント
  • C# OpenFileDialogを使用してcsv形式のファイルを選択し、テキストボックスにファイルのパスを表示する方法についてご教授ください。
  • 選択されたファイルがcsv形式でない場合にエラーメッセージを表示する処理の実装方法についてお知りになりたいです。
  • 初心者のため、具体的なコード例を参考にしていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

↓こんな感じでしょうか。 ================================================================= using System; using System.Windows.Forms; namespace CsTest3 { public partial class Form1 : Form { private OpenFileDialog ofd; public Form1() { InitializeComponent(); ofd = new OpenFileDialog(); ofd.FileOk += new System.ComponentModel.CancelEventHandler(this.ofd_FileOk); } private void button1_Click(object sender, EventArgs e) { if(ofd.ShowDialog() == DialogResult.OK ) { textBox1.Text = ofd.FileName; } } private void ofd_FileOk(object sender, System.ComponentModel.CancelEventArgs e) { if( System.IO.Path.GetExtension(ofd.FileName).ToLower() != ".csv" ) { MessageBox.Show(".csv ファイルを選択してください。", this.textBox1.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); e.Cancel = true; } } } } ================================================================= 上の例では、 ofd = new OpenFileDialog(); ofd.FileOk += new System.ComponentModel.CancelEventHandler(this.ofd_FileOk); でダイアログ、および、イベントを指定していますが、デザイン画面配置する場合は、 FileOpenDialog をクリック ↓ プロパティウィンドウのイベント(雷のアイコン)をクリックしてイベントを表示させる ↓ FileOk にプロシージャ名を入力 とすることもできます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • diszo
  • ベストアンサー率78% (32/41)
回答No.2

拡張子で判断するということなので、 おっしゃっているやり方では、次のようになると思います。 OpenFileDialog dlg = new OpenFileDialog(); DialogResult res = dlg.ShowDialog(); //選択されなかったらなにもしない if (res != DialogResult.OK) {   return; } //拡張子判断(using System.IOを追加) if (Path.GetExtension(dlg.FileName).ToLower() == ".csv") {   label1.Text = dlg.FileName; } else {   MessageBox.Show("CSVを選択してください"); } ただし、そもそもCSVファイル以外は読み込ませたくないのであれば、 FileOpenDialogでフィルタをかけてしまい、 CSVファイルのみ表示するようにすれば、 目的は達成されると思うのですが、 //ダイアログを設定 OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "CSVファイル|*.csv"; //CSVだけ表示 DialogResult res = dlg.ShowDialog(); //ダイアログを表示 //選択されなかったらなにもしない if (res != DialogResult.OK) {   return; } label1.Text = dlg.FileName; //ファイル名を表示 インデントをつけるために、スペースは全角になっています。

すると、全ての回答が全文表示されます。

関連するQ&A