在扩展打开/保存文件对话框中的视觉风格exception

我按照这篇文章解释了如何使用.NET扩展Windows的内置文件打开/保存对话框。 一些小的改变后,一切正常,但对话框的外观与其他对话框略有不同。 这并不重要,但我很好奇它背后的原因。

我的对话框(平面button): 我的对话框(平面按钮)

其他对话框(3Dbutton): 其他对话框(3D样式按钮)

从这篇文章的评论:

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; } }