我跟着this article解释了如何使用.NET扩展Windows的内置文件打开/保存对话框。经过一些小的改动后,一切正常,但对话框的外观与其他对话框略有不同。这并不重要,但我很好奇它背后的原因是什么。
我的对话框(平面按钮):
其他对话框(3D按钮):
答案 0 :(得分:3)
从该文章的评论中可以看出:
SaveFileDialogWithEncoding示例很棒。然而,外观和感觉是“旧式” - 换句话说,按钮和控件没有新的“XP外观”(即圆形按钮等)。它可能是OPENFILENAME结构中某个字段中的标志设置,我正在研究它。我只是想知道你(或其他任何人)是否对解决这个问题有任何见解。
然后自我回答:
没关系 - 想通了。在实例化表单对象之前,需要像这样调用Application.EnableVisualStyles():
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
答案 1 :(得分:1)
LarsTech的解决方案似乎适用于大多数情况,但似乎不适用于Office加载项。这里按照in this Microsoft article所述实施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;
}
}