FileDialog使用哪个目录?

时间:2009-09-12 23:30:05

标签: c# .net winforms

FileDialog(OpenFileDialog / SaveFileDialog)使用哪个目录?
当我从我的应用程序中显示它时,它会打开不是Environment.CurrentDirectory文件夹的文件夹。 我怎样才能获得此目录路径?或者它是由操作系统控制的,我不知道它?

5 个答案:

答案 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)

如何查看显示它的方法的源代码,看看它使用了什么字符串?