- - PR -
C#でOpenFileDialogを複数箇所で使用するときInitialDirectoryは?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-01-20 00:53
初めまして、C#初心者です。
OpenFileDialogを複数箇所で異なるディレクトリから開きたいのですがうまくいきません。 最初に表示されたopenFileDialogのInitialDirectoryプロパティがずっといきています。 Dialog中でディレクトリを移動した場合、次のダイアログを開くときはその場所から始まります。 InitialDirectoryプロパティ指定を生かす方法をお教えいただきたく、 よろしくお願いいたします。 (大分略していますが下記のようなコーディングをしています) private void button1_Click(object sender, System.EventArgs e) { DialogResult ret; openFileDialog1.InitialDirectory = @"c:\"; openFileDialog1.RestoreDirectory = true; openFileDialog1.Filter="*.txt"; ret = openFileDialog1.ShowDialog(); } private void button2_Click(object sender, System.EventArgs e) { DialogResult ret; openFileDialog2.InitialDirectory = @"c:\"; openFileDialog2.RestoreDirectory = true; openFileDialog2.Filter="*.txt"; ret = openFileDialog2.ShowDialog(); } | ||||
|
投稿日時: 2006-01-20 01:01
InitialDirectory をその都度合うように設定してください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-01-20 01:30
南部です。
InitialDirectoryプロパティ指定を生かす方法ってこういうことではないのかな? | ||||
|
投稿日時: 2006-01-21 02:38
じゃんぬねっと様、南部さま、ありがとうございます。
相対パスの扱いに誤りがあるようですので調べてみます。 | ||||
|
投稿日時: 2006-01-21 10:32
そういうことだったのね。
RestoreDirectory がわざわざ設定されているからわけがわからなかった。
相対パス? 通常、パスは CurrentDirectry からの開始になりますよね。 扱いに誤りがあるというのはどういうことでしょう? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-01-23 14:19
大変恥ずかしい原因がわかり、自己解決しました。
複数ファイルにInitialDirectoryを保存しているファイルを参照するのに古いものを読んでおりました。 存在しないディレクトリのため、最初の実在する設定がずっと使われていたのでした。 お手数おかけして申し訳ありません。ありがとうございました。 | ||||
|
投稿日時: 2006-02-21 21:21
基本的な部分で解決できていませんでした。
質問のしかたをかえまして、再度お願いいたします。 ボタン押下時に、OpenFileDialogを使い特定ディレクトリのファイルを選択し、テキストボックス、またはラベルに表示しようとしております。 特定ディレクトリ(A)をInitialDirectoryで指定しています。 実行時にOpenFileDialogでディレクトリを(B)に移動しファイルを選択すると、 次回にOpenFileDialogを呼び出したときには表示は(B)からになってしまいます。 ボタン押下の都度、固定(A)ディレクトリからOpenFileDialogを表示するにはどうしたらよいでしょうか。 現在の動作は下記のソースによります。 static void Main() { Application.Run(new Form1()); } private void button1_Click(object sender, System.EventArgs e) { DialogResult ret1; openFileDialog1.InitialDirectory = @"C:\\"; openFileDialog1.CheckFileExists = true; openFileDialog1.RestoreDirectory = true; openFileDialog1.Filter= "すべてのファイル(*.*)|*.*|"+ "テキストファイル(*.csv)|*.csv"; openFileDialog1.FilterIndex = 2; ret1 = openFileDialog1.ShowDialog(); if(ret1 == DialogResult.OK) label2.Text = System.IO.Path.GetFileName(openFileDialog1.FileName); else label2.Text = ""; openFileDialog1.Dispose(); } private void Form1_Load(object sender, System.EventArgs e) { } } | ||||
|
投稿日時: 2006-02-22 09:58
その前に、ご提示されたソースではコンパイル通らないと思うんですが...
また Dispose している割に再インスタンス化していませんよね。 ですので、現状の悩んでいる状況と結びつきません。
とりあえず、こんな感じで問題ないと思いますが、如何でしょうか? もちろん、複数箇所あるならば複数箇所で同じような実装になるでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |