やりたかったこと:
BtnSaveAsFileボタンでファイルに名前を付けて保存する。
ファイルを保存ダイアログで選択されたフォルダ(カレントディレクトリ)を覚えて、
再度、ファイルを保存ダイアログが表示されたときにそのフォルダ内部を
みせたい。
ソースの一部:
Public g_strDir As String ’これはグローバル変数
'初期でマイドキュメントに設定
g_strDir = _
System.Environment.GetFolderPath(Environment.SpecialFolder.Personal)
'カレントがいなくなった時の処理もしている
If System.IO.Directory.Exists(g_strDir) = False Then
g_strDir = System.Environment.GetFolderPath(Environment.SpecialFolder.Personal)
End If
’ボタンクリックイベントでダイアログを出す
BtnSaveAsFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles BtnSaveAsFile.Click
Dim sfd As New SaveFileDialog()
sfd.InitialDirectory = g_strDir
If sfd.ShowDialog() = DialogResult.OK Then
g_strDir = CurDir() ’ここでカレントを確保※
’ここらへんでファイル保存処理をやっている
End If
End Sub
WinXPだと※のときのg_strDirは保存先ディレクトリを確保できている
でも、Win7だと実行exeのあるディレクトリを確保してしまう。。。
したかがないので、保存するファイル名を含むパスを取ってきて
ディレクトリ名だけを抽出して確保することにした。
※を↓こんなふうに変更したらうまくいったよ^^*
g_strDir = System.IO.Path.GetDirectoryName(sfd.FileName)
あーよかった。。。