.net - 如何配置 OpenFileDialog 来选择文件夹?

标签 .net windows winapi openfiledialog

在 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 中是不可否认的,但它确实 工作)和 Mark Ransom 发现 MS 可能为此任务推出了一个自定义对话框。

最佳答案

我有一个我编写的名为 OpenFileOrFolder 对话框的对话框,它允许您打开文件夹或文件。

如果将其 AcceptFiles 值设置为 false,则它仅在接受文件夹模式下运行。

You can download the source from GitHub here

关于.net - 如何配置 OpenFileDialog 来选择文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059/

相关文章:

c# - 强制创建 WPF 窗口的 native Win32 句柄

c# - 使用设置的最大精度格式化十进制数,但没有不需要的尾随零

c# - 我可以减少 WPF 应用程序中手写笔/触摸输入的开销吗?

windows - 如何检测 Delphi FMX Windows 窗体中的鼠标后退和前进按钮?

Windows 批处理脚本 - 获取包含另一个文件夹但不包含某个父文件夹的文件夹

c++ - 如何链接 TextOut() 函数的库?

c++ - 在 native Windows 应用程序的资源中嵌入文本文件

c++ - 使用旧语法的 .NET C++ 内存泄漏?

.net - 奇怪的反序列化错误,子对象没有完全反序列化

java - EC2 Windows - 获取管理员密码