![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Outlook(アウトルック) 【 Windows 10 】アドレス帳に正しくインポートを完了させたい。 3 2023/04/23 13:41
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) [クイックアクセスツールバー]の設定ファイルの格納場所について、 5 2023/04/21 14:43
- iOS iPhone用動画保存アプリiCapのデータは外付けUSBメモリに保存できますか? 1 2022/10/18 17:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#include <Windows.h>というヘ...
-
C言語---ファイルに出力したデ...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトで、指定し...
-
ラッパーって何なんでしょう・...
-
監視ツールを入れさせられまし...
-
リンクの張り付けかたを教えて...
-
.NETアプリを作ったときの .man...
-
reaper音声ファイルについて
-
エクセルのヘルプファイルって...
-
「ブルーファイル」と「グリー...
-
Tomcatのプロジェクトのクラス...
-
シリアル(RS232C)通信でファ...
-
VBAでのicsファイル変換
-
binファイルを解凍したいの...
-
フォルダ内にあるファイル全て...
-
エクセルファイルが複数同時に...
-
exeファイルを開こうとすると「...
-
参照するファイルをワイルドカ...
-
jarファイル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセス 壊れた? 「ファイ...
-
C#でログファイルにファイルパ...
-
binファイルを解凍したいの...
-
#include <Windows.h>というヘ...
-
Latexで図番号だけを「図1.1」...
-
.NETアプリを作ったときの .man...
-
exeファイルの中身を見る方法は...
-
C言語---ファイルに出力したデ...
-
CSSを1ページに1枚作るのって変...
-
jarファイル
-
コマンドプロンプトで、指定し...
-
自分で作成した重要ファイルを...
-
コマンドプロンプトで作成日時...
-
バッチ処理で追記コピーしたい
-
ファイルが開かれているかどう...
-
VBSが起動しない
-
公文書のxmlファイルの開き方が...
-
監視ツールを入れさせられまし...
-
Seasar2のdiconファイルの読み方
-
ファイル名にドットを使ったフ...
おすすめ情報