【发布时间】:2013-01-29 06:15:26
【问题描述】:
我希望使用自定义 WinForms 和 WPF 控件自定义类似于 Vista 的 OpenFileDialog。我知道您可以模板化XP-like OpenFileDialog,但这看起来很丑陋并且不能满足我的要求。我知道您可以使用Ookii 对话框或Microsoft's API Code Pack 自定义OpenFileDialog。这种方法的问题是它们不允许自定义控件,只允许有限的控件子集(Label、TextBox 等)。
我得到的最接近的是下图。使用 API 代码包的组合,对 Shell 进行一些更改,为间距添加空标签的 hack 工作,以及一堆丑陋的 COM 直接在 OpenFileDialog 上绘制控件,我能够接近。
这种方法的问题是我必须在 WndProc 中禁用重新调整大小,因为 CommonOpenFileDialog 中的控件部分具有流/换行布局,并且您无法在重新调整大小时动态添加/删除控件或如果 OpenFileDialog 已经显示,您将遇到灾难性的失败。
除了我尝试过的或任何第三方产品,是否有任何建议可以作为标准的类似 Vista 的 OpenFileDialog 但允许插入自定义控件?
[
我也尝试使用 API 代码包中的 ExplorerBrowser(如下图所示)滚动我自己,但尽管梳理了 COM API,但似乎没有一种方法可以在 ExplorerBrowser 中定义过滤器。
[
【问题讨论】:
-
IFileDialogCustomize 支持大量的装饰物。但它不是无限可扩展的,并且您没有您可能正在寻找的灵活性。也不可能使用全新的东西。您无能为力,只能满足于支持的内容。
-
为什么您要尝试“自定义 FileOpen 对话框”?你的“自定义控件”会做什么?
-
@DourHighArch - 我想添加一个缩略图幻灯片,如第一张图片所示,但用于自定义文件类型。工具提示中需要包含其他数据。用户还可以选择定义一些影响缩略图呈现方式的配置参数。这不仅仅是为文件类型设置 IPreviewHandler 的问题。
-
为什么不从头开始设计对话框?
-
这家伙创建了一个树视图目录。 youtube.com/… 它可以给你一些提示来创建你自己的 OpenFileDialog。
标签: .net wpf winforms windows-7 openfiledialog