C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C# OpenFileDialogとファイル存在チェック


(過去ログ 54 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■30695 / inTopicNo.1)  C# OpenFileDialogとファイル存在チェック
  
□投稿者/ りんくす (1回)-(2009/01/03(Sat) 05:59:44)

分類:[C#] 

2009/01/03(Sat) 06:02:16 編集(投稿者)

こんにちは、大変初歩的?な質問で申し訳ありませんが
どうも自己解決できそうにないので質問させていただきます

環境:Visual studio2005 C#

以下のような処理でOpenFileDialogを使用しファイルを選択しpictureboxに画像を表示し

private void 画像選択_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
//OKボタンがクリックされたとき
//選択された画像ファイルをpictureboxに表示する
System.IO.FileStream lfs_pic;
lfs_pic = new System.IO.FileStream(ofd.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
picturebox.Image = System.Drawing.Image.FromStream(lfs_pic);
lfs_pic.Close();
}
}

その後以下の処理を実行すると…

//ファイル存在チェックのテスト
private void test001()
{
if (File.Exists("data/book.txt"))
{
MessageBox.Show("ファイル発見", "確認");
return;
}
else
{
MessageBox.Show("ファイルがありません。", "エラー");
return;
}
}

指定されたファイルを発見できません、ファイルは存在し、”画像選択_Click”の処理で画像を開かなかった場合は
ファイルを発見してくれるのですが…、当然、存在チェックをかけずに"data/book.txt"にStreamWriterで上書き処理を
強引に行おうとしてもファイルにアクセスできずに以下のような例外エラーがはき出されます

System.IO.DirectoryNotFoundException はハンドルされませんでした。
Message="パス 'D:\\作業領域\\新しいフォルダ\\コピー 〜 img\\data\\book.txt' の一部が見つかりませんでした。"
Source="mscorlib"

画像選択_Clickで、ofd.ShowDialog()でファイルを選択すると、その後の処理を全て
コメントアウトした状態にしても状況は変わりません
いろいろ調べてみたのですがどうにも解決できませんでした…
なんとかみなさんのお力で解決に導いていただけないでしょうか?
ヨロシクおねがいします。

引用返信 編集キー/
■30696 / inTopicNo.2)  Re[1]: C# OpenFileDialogとファイル存在チェック
□投稿者/ りんくす (2回)-(2009/01/03(Sat) 06:15:00)
投稿してすぐなんですが、例外エラーの情報をよく見ていたら
カレントフォルダが変わっていることに気づきました…
画像を開いた後実行ファイルがあるディレクトリを
カレントディレクトリに設定しなおすことで回避できました^^;
ほんと恥ずかしい>< 7時間も気づかなかったなんて…
ということで手前味噌ですが自己解決ということで
板汚し失礼しました。
解決済み
引用返信 編集キー/
■30697 / inTopicNo.3)  Re[2]: C# OpenFileDialogとファイル存在チェック
□投稿者/ まさる (43回)-(2009/01/03(Sat) 08:33:24)
まさる さんの Web サイト
No30696 (りんくす さん) に返信
> 投稿してすぐなんですが、例外エラーの情報をよく見ていたら
> カレントフォルダが変わっていることに気づきました…
> 画像を開いた後実行ファイルがあるディレクトリを
> カレントディレクトリに設定しなおすことで回避できました^^;
> ほんと恥ずかしい>< 7時間も気づかなかったなんて…
> ということで手前味噌ですが自己解決ということで
> 板汚し失礼しました。

解決済みですが、補足。

OpenFileDialog.RestoreDirectoryプロパティをtrueにすることで、
カレントディレクトリを手動で直さずとも自動で復元してくれます。

http://msdn.microsoft.com/ja-jp/library/system.windows.forms.filedialog.restoredirectory.aspx
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -