在VS . net中,当你为项目选择文件夹时,会显示一个类似于OpenFileDialog或SaveFileDialog的对话框,但设置为只接受文件夹。自从我看到这个,我就想知道它是怎么做到的。我知道FolderBrowserDialog,但我从来都不喜欢那个对话框。它开始太小,不让我利用能够键入路径的优势。
到目前为止,我几乎可以肯定在。net中没有办法做到这一点,但我很好奇在非托管代码中如何做到这一点。如果不从头开始完全重新实现对话框,如何修改对话框以使其具有这种行为呢?
我还想重申,我知道FolderBrowserDialog,但有时我不喜欢使用它,除了真正好奇如何以这种方式配置对话框。告诉我只使用FolderBrowserDialog可以帮助我保持一致的UI体验,但不能满足我的好奇心,所以它不能算作答案。
这也不是vista特有的东西;自从VS . net 2003以来,我一直在看到这个对话框,所以它在Win2k和WinXP中是可行的。这不是一个“我想知道正确的方法来做这个”的问题,而更多的是一个“我对这个很好奇,因为我第一次想在VS 2003中做这个”的问题。我知道Vista的文件对话框有一个选项可以这样做,但它一直在XP中工作,所以我知道他们做了某物来让它工作。特定于Vista的答案不是答案,因为Vista不存在于问题上下文中。
更新:我接受Scott Wisniewski的答案,因为它附带了一个工作示例,但我认为Serge值得赞扬,因为他指出了对话框定制(这在。net中确实很讨厌,但它does work), Mark Ransom指出MS可能为这个任务滚动了一个自定义对话框。