提问人:Brian Mullen 提问时间:2/14/2013 最后编辑:C. Augusto ProieteBrian Mullen 更新时间:7/18/2023 访问量:1563
如何自定义 >= Vista 的 FileOpen 对话框?
How do I customize the FileOpen dialog for >= Vista?
问:
我希望使用自定义 WinForms 和 WPF 控件自定义类似 Vista 的内容。我知道您可以对类似 XP 的 OpenFileDialog 进行模板化,但这看起来很丑陋,不能满足我的要求。我知道您可以使用 Ookii 对话框或从 Microsoft 的 API 代码包自定义。这种方法的问题在于它们不允许自定义控件,只允许有限的控件子集(、等)。OpenFileDialog
OpenFileDialog
Label
TextBox
我得到的最接近的是下图。结合使用 API 代码包、对 Shell 的一些更改、为间距添加空标签的黑客工作,以及一堆丑陋的 COM 直接在 OpenFileDialog 上绘制控件,我能够接近。
这种方法的问题在于,我必须在 WndProc 中禁用调整大小,因为 中的控件部分具有流/换行布局,并且您无法在调整大小时动态添加/删除控件,否则如果 OpenFileDialog 已经显示,则会出现灾难性故障。CommonOpenFileDialog
除了我尝试过的或任何第三方产品之外,是否有任何建议可以作为标准的类似 Vista 的 OpenFileDialog 工作,但允许插入自定义控件?
[
我还尝试使用 API 代码包中的 ExplorerBrowser(如下图所示)滚动自己的浏览器,但尽管梳理了 COM API,但似乎没有办法在 ExplorerBrowser 中定义过滤器。
[
答:
这种事情可以很容易地使用 WPF 和 XAML 从头开始编写。如有必要,可以使用所需的简单子组件的控件。
如果您尝试修改现有文件对话框,您将受到限制,并且以后可能会碰到砖墙。
评论
完全同意保罗·桑普纳(Paul Sumpner)的观点。如果 Ookii 对话框不适合,在我看来,唯一的其他选择就是从头开始构建自己的对话框。
评论