
C# OpenFileDialogで指定した拡張子以外のファイルが選ばれた際のエラー処理
いつもお世話になっております。
唐突な質問で申し訳ございません。
現在、C#でOpenFileDialogによってcsv形式のファイルを選択し、ダイアログを閉じた後、
テキストボックスにファイルのパス(名前)の表示をしようとしています。
その際、もし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 にプロシージャ名を入力
とすることもできます。
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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「営業秘密の漏洩」について
-
アクセス 壊れた? 「ファイ...
-
公文書のxmlファイルの開き方が...
-
リンクの張り付けかたを教えて...
-
.NETアプリを作ったときの .man...
-
ファイルの閉じるコマンドにつ...
-
jarファイル
-
監視ツールを入れさせられまし...
-
ファイル形式
-
ファイル圧縮形式の変更について
-
VBAでHTMLファイルをPDFにしたい
-
VB6.0でFTPでのファイルの送受信
-
#include <Windows.h>というヘ...
-
コマンドプロンプトで作成日時...
-
JSPが表示されない
-
バッチ処理で追記コピーしたい
-
Latexで図番号だけを「図1.1」...
-
VB6.0 PowerPointの開閉
-
[tex] algorithmic.sty
-
拡張子 .lilについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#include <Windows.h>というヘ...
-
コマンドプロンプトで作成日時...
-
アクセス 壊れた? 「ファイ...
-
binファイルを解凍したいの...
-
.NETアプリを作ったときの .man...
-
リンクの張り付けかたを教えて...
-
Latexで図番号だけを「図1.1」...
-
jarファイル
-
監視ツールを入れさせられまし...
-
自分で作成した重要ファイルを...
-
コマンドプロンプトで、指定し...
-
C言語---ファイルに出力したデ...
-
公文書のxmlファイルの開き方が...
-
「ブルーファイル」と「グリー...
-
HTMLからのBATファイル実行
-
CSVから指定行だけを読み込み
-
ファイルが開かれているかどう...
-
warファイルをEclipseでプロジ...
-
exeファイルの中身を見る方法は...
-
VB6 でSSH接続がしたい
おすすめ情報