c# - 从 .NET 中的同一对话框中选择文件或文件夹

标签 c# .net vb.net winforms openfiledialog

是否有一种“简单”的方法可以从同一对话框中选择文件或文件夹?

在我创建的许多应用程序中,我都允许将文件或文件夹作为输入。 直到现在,我总是最终创建一个开关来在文件或文件夹选择对话框之间切换,或者只坚持拖放功能。

因为这看起来是一件很基本的事情,所以我想这已经被创造出来了,但是谷歌搜索并没有得到太多信息。所以看起来我需要从头开始并创建一个自定义选择对话框,但我不想通过为这样一个微不足道的任务重新发明轮子来引入任何问题。

有人有任何提示或现有解决方案吗?

为了保持 UI 的一致性,最好能扩展 OpenFileDialog(或 FolderBrowserDialog)。

最佳答案

从技术上讲,这是可能的。 FolderBrowseDialog 使用的 shell 对话框能够返回文件和文件夹。不幸的是,.NET 中没有公开该功能。甚至反射都不能戳到所需的选项标志。

要使其正常工作,您必须在 BROWSEINFO.ulFlags(值 = 0x4000)中打开 BIF_BROWSEINCLUDEFILES 标志的情况下 P/Invoke SHBrowseForFolder()。 P/Invoke 是坚韧不拔的,最好从another source 中复制并粘贴代码。或在 Reflector 的帮助下的 FolderBrowseDialog 类本身。

关于c# - 从 .NET 中的同一对话框中选择文件或文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/428410/

相关文章:

c# - 请求字母前的奇数 `\` 的否定前瞻

.net - Visual Studio 错误地报告未安装 Web 部署提供程序 (SQL Azure)

c# - 创建接受参数的委托(delegate)函数

asp.net-mvc - 如何构建 VB.NET Windows 窗体应用程序

c# - 对话框不继承 Main WIndow 的 metro 风格(Elysium SDK)

c# - 高架赛车游戏中的汽车/车辆在拐角处漂移

.net - 具有两个不同客户端的两种绑定(bind)类型的 WCF 服务

c# - 静态关键字、状态/实例变量和线程安全

.net - 从源列表创建新的随机列表

c# - 将别名/前缀添加到现有 XML 命名空间