如何定制>= Vista的FileOpen对话框?

14
我想定制类似Vista的OpenFileDialog,使用自定义WinForms和WPF控件。我知道你可以为XP-like OpenFileDialog创建模板,但那看起来很丑,不符合我的要求。我知道你可以使用Ookii对话框或Microsoft's API Code Pack自定义OpenFileDialog。这种方法的问题是它们不允许自定义控件,只有一组有限的控件(LabelTextBox等)。
我得到的最接近的结果如下图所示。使用API Code Pack的组合,对Shell进行了一些更改,添加了空标签以进行间隔处理,并使用一些丑陋的COM在OpenFileDialog上直接绘制控件,我已经接近成功了。
这种方法的问题在于我必须在WndProc中禁用重新调整大小,因为CommonOpenFileDialog中的控件部分具有流式/换行布局,如果您在重新调整大小时动态添加/删除控件,则会出现灾难性故障(如果OpenFileDialog已经被显示)。
除了我尝试过的方法之外,是否有任何建议或第三方产品可作为标准的类似Vista的OpenFileDialog,但允许插入自定义控件?

[

我也尝试使用 API 代码包中的 ExplorerBrowser(如下图所示)来自行开发,但是尽管对 COM API 进行了详细检查,似乎没有办法在 ExplorerBrowser 中定义筛选器。

[


IFileDialogCustomize支持大量的小玩意儿。但它并不是无限可扩展的,也不能提供您可能正在寻找的灵活性。同时,也不可能安装全新的功能。只能接受当前所支持的。 - Hans Passant
你为什么要尝试“自定义文件打开对话框”?你的“自定义控件”将要做什么? - Dour High Arch
@DourHighArch - 我想添加一个缩略图电影带,就像第一张图片所示,但是针对自定义文件类型。需要包含在工具提示中的附加数据。还有一些配置参数,用户可以选择定义,这些参数会影响缩略图的呈现方式。这不仅仅是设置文件类型的IPreviewHandler的问题。 - Brian Mullen
12
为什么不从零开始设计对话框? - Mathieu Guindon
请查看此CodeProject文章链接 - Congenital Optimist
显示剩余2条评论
2个回答

0

这种东西可以很容易地使用WPF和XAML从头开始编写。如果需要,还有易于子组件的控件。

如果您尝试修改现有的文件对话框,您将受到限制,并且可能在以后遇到障碍。


@Paul_Sumpner:提供一些示例代码会很有帮助,不是吗? - D J

-1
完全同意Paul Sumpner的观点。如果Ookii对话框不合适的话,我认为唯一的选择就是从头开始自己构建。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接