FileDialog(OpenFileDialog / SaveFileDialog)使用哪个目录?
当我从我的应用程序中显示它时,它会打开不是Environment.CurrentDirectory文件夹的文件夹。
我怎样才能获得此目录路径?或者它是由操作系统控制的,我不知道它?
答案 0 :(得分:2)
根据MSDN:
在Windows Vista上,如果是InitialDirectory 设置为完整的文件名而不是 只是一个目录路径,最初的 目录将默认为 应用程序路径,或目录 用户最后选择了一个 文件。
否则它似乎没有说什么,对我来说它看起来像Environment.SpecialFolder.MyDocuments,我正在使用Vista。
答案 1 :(得分:1)
此信息基于每个应用程序存储在注册表中,因此您应该能够检索它。我不记得确切的注册表位置,我会试着找到它......
编辑:
在Windows7上,它存储在HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ ComDlg32 \ LastVisitedPidlMRU
中值名称只是数字,内容以某种二进制格式编码,所以它可能不是很容易阅读......
答案 2 :(得分:0)
您可以使用OpenFileDialog的“InitialDirectory”属性进行设置。
答案 3 :(得分:0)
您可以对GetOpenFileName函数进行外部调用,以查看初始OPENFILENAME结构存储的内容(查看lpstrInitialDir)。
来自MSDN:lpstrInitialDir
指向NULL终止字符串的指针,该字符串可以指定初始目录。
您还可以检查以下注册表项: HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Explorer中\ COMDLG32 \ LastVisitedMRU \
有一个名为MRUList的字符串值,其中包含一个以二进制值命名的索引顺序。如果在MRUList中打开第一个索引的二进制值(无论哪个字母),您将看到应用程序的名称和目录。
编辑:如果您尝试手动设置/获取它,您可能会发现本讨论底部的code很有用。
答案 4 :(得分:0)
如何查看显示它的方法的源代码,看看它使用了什么字符串?