我按照这篇文章解释了如何使用.NET扩展Windows的内置文件打开/保存对话框。 一些小的改变后,一切正常,但对话框的外观与其他对话框略有不同。 这并不重要,但我很好奇它背后的原因。
我的对话框(平面button):
其他对话框(3Dbutton):
从这篇文章的评论:
SaveFileDialogWithEncoding示例非常棒。 然而,外观和感觉是“旧式” – 换句话说,按钮和控件没有新的“XP外观”(即圆角按钮等)。 这可能是OPENFILENAME结构中某个字段的标志设置,我正在研究这个。 我只是想知道你(或其他人)是否有解决这个问题的见解。
然后自我回答:
没关系 – 弄明白了。 在实例化表单对象之前,需要像这样调用Application.EnableVisualStyles():
[STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); }
LarsTech的解决方案似乎在大多数情况下工作,但似乎不适用于Office加载项。 在这篇Microsoft文章中描述的实现EnableThemingInScope
并将其与以下代码一起使用有助于。
using( new EnableThemingInScope( true ) ) { if (!GetSaveFileName(ref ofn)) { int ret=CommDlgExtendedError(); if (ret!=0) { throw new ApplicationException("Couldn't show file open dialog - " + ret.ToString()); } return DialogResult.Cancel; } }