SaveFileDialogで初期ファイル名をインクリメントするには?

解決


ゆーき  2005-11-03 16:30:10  No: 127273

「Microsoft Office Access」では新しいデータベースを作成しようとした時、既に「db1.mdb」が存在すると「db2.mdb」といった具合に数字部分がインクリメントされてファイル名の部分に入ってきます。これと、同じことをしたいのですが、
このように、ダイアログが開く前に、アプリケーションが最後に使用したデディレクトリを見に行くことは可能でしょうか?


魔界の仮面弁士  2005-11-03 19:31:17  No: 127274

開発環境は何ですか?
SaveFileDialogという事は…VB.NETで良いのかな。

> アプリケーションが最後に使用したデディレクトリ
カレント ディレクトリの位置を調べた後、
そのディレクトリの内容を調べればよろしいかと。

たとえば VB.NET 2003 ならば、
  Dim D As String = System.IO.Directory.GetCurrentDirectory()
  For Each F As System.IO.FileInfo In New System.IO.DirectoryInfo(D).GetFiles("*.mdb")
      MessageBox.Show(F.Name)
  Next
とか。


ゆーき  2005-11-04 00:30:46  No: 127275

魔界の仮面弁士様、ご回答頂き有難うございます。環境はVB.NET 2003です。
早速、試してみましたが、上手くいきませんでした。
System.IO.Directory.GetCurrentDirectory()の部分が、Application.StartupPathと同じになってしまい、実行ファイルが置いてある「C:\....\bin」を示しているようです。


3−t  2005-11-04 02:39:50  No: 127276

カレントパスの初期値はApplication.StartupPathだらか
うまく言ってるんじゃないの?


ゆーき  2005-11-04 18:06:29  No: 127277

説明が上手く出来なくてすみません。
SaveFileDialogは、「前回保存動作をしたディレクトリ」をどこかに記憶させているようでして、Application.StartupPathとは関係ないディレクトリが開きます。マイドキュメントやデスクトップなどです。
この「前回保存したディレクトリ」の記録は、どうやら、各アプリケーション毎に分けられて記録されているようです。これが、どこに記憶されているのかが分かれば解決するのかもしれませんが、分からないのです。


Dental  2005-11-04 18:22:54  No: 127278

> どこに記憶されているのかが分かれば
それが分からなくても、InitialDirectory に『カレントディレクトリ』を
渡してから開くようにすれば、目的は果たせませんか?


通ってみた  2005-11-04 19:31:15  No: 127279

簡単な方法〜

ファイルを開いたら、そのパスをテキストファイルに出力しておく
次回開く時にそのファイルからパス情報を拾えばオケ


ゆーき  2005-11-05 12:00:58  No: 127280

ああーっ!!!その手がありましたね!(^^)!
パスをテキストファイルに出力しておく方法で実現できますね。

親切にご意見下さいました皆様、本当に有難うございました。
感謝感謝です。m(_ _)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加