我正在尝试在C#中创建一个文件和文件夹对话框。 (只是一个警告:我将向所有FolderBrowserDialog
提出建议。这个对话是大自然的憎恶)
目前我正在使用WindowsApiCodePack中的CommonOpenFileDialog
,它具有属性IsFolderPicker
,使对话框成为文件夹选择器。
但我的用户需要能够选择文件或文件夹。
所以我正在寻找一个允许我同时选择文件和文件夹的对话框。手段并不重要。 C#,WPF,WindowsApiCodePack,Ookii对话框,C ++,P / Invoke,Com +,Win32,VB等......
我只需要一个控件,让我选择一个文件或文件夹,我可以从C#调用,并且具有默认的Windows OpenFileDialog外观。这有可能,怎么样?
答案 0 :(得分:1)
几年前我定制了FolderBrowser
对话框。
我让它显示输入字段,用户可以在其中指定路径而无需浏览它。我认为可以自定义以显示文件和文件夹。
这就是我进行自定义的方式:
我使用.NET Reflector来反汇编FolderBrowserDialog
的代码。我将反汇编代码保存为MyFolderBrowserDialog
。
在反映的代码中,我发现FolderBrowserDialog
调用非托管窗口函数SHBrowseForFolder
,它接受BROWSEINFO
结构作为参数。 BROWSEINFO
结构具有ulFlags
成员,该成员是一个标记值,可以进行位掩码以包含您要使用的功能。
在MyFolderBrowserDialog
位掩码BIF_EDITBOX (0x00000010)
进入ulFlags
以获取输入字段。
根据文档,如果您将BIF_BROWSEINCLUDEFILES (0x00004000)
添加到ulFlags
,它应该包含文件和文件夹,从而解决您的问题。
我实际上并没有试图让它显示文件,但我认为它可能值得一试。
希望这有帮助!