Application.EnableVisualStyles()做了什么吗?

时间:2011-07-20 15:07:40

标签: c# visual-studio-2008

在理解一门新语言时我非常挑剔,最近我开始学习C#。所以我想知道创建新应用程序时发生的一切 - 在这种情况下是一个新的Windows窗体应用程序。我创建了一个,并从Visual Studio中获得了一些生成的代码,其中一行是Application.EnableVisualStyles()

我在MSDN上做了一些研究,发现了这篇文章:Application.EnableVisualStyles()。我执行了一个示例,当我评论出所述行时,他们提出了期望按钮不可见的示例。没啥事儿!似乎没有任何改变。我知道这是一个非常基本的例子但不应该改变一些事情吗?如果这在Main()过程中如此重要,那么我究竟在做什么呢?

4 个答案:

答案 0 :(得分:38)

是的,但您需要在操作系统中启用某些设置,否则您将无法看到它是什么。

以下是我系统上相同应用程序的一些截图:

Application.EnableVisualStyles();

With visual themes

// Application.EnableVisualStyles();

Without visual themes

如果其他应用程序中的按钮看起来像第二个屏幕截图,那么无论您是否使用Application.EnableVisualStyles(),您都将看到无主题的按钮,因为它们被操作系统关闭 - 将它们重新打开的方式取决于在您的操作系统上,但通常需要转到效果>> 视觉效果对话框。

答案 1 :(得分:12)

它打开滚动条和按钮等更具创意的股票图纸。如果为false,则会获得纯灰色库存控件等。

enter image description here

答案 2 :(得分:8)

EnableVisualStyles()并不意味着当该方法运行时,按钮现在是可视化绘制的,这意味着它将使用内置的Windows主题来控制样式而不是“经典Windows”的外观和感觉。如果您的计算机没有样式运行,那么您就不会发现任何差异。

您也可以对此答案感兴趣:Should I call Application.EnableVisualStyles() on terminal services?

答案 3 :(得分:3)

这是我从Microsoft支持部门获得的,以回应一个模糊的应用程序崩溃调查:

要点是崩溃是comctl32.dll(Windows公共控件)5.0版中的已知错误,它随Windows操作系统一起提供。此错误不会在通用控件的5.0版中修复,因为该版本适用于Windows XP之前的应用程序。它已经在comctl32.dll的6.0版本中得到修复,它包含在Windows XP及更高版本中。请注意,自Windows XP以来,每个版本的Windows都包含两个版本的comctl32.dll(5.0和6.0)。较旧的应用程序仅用于向后兼容,适用于非常旧的应用程序。

要解决此问题,您需要更改应用程序以使其选择进入comctl32.dll版本6.0。在Windows窗体应用程序中,这是通过在应用程序启动时调用Application.EnableVisualStyles方法来完成的。如果您正在C#项目中进行开发,那么您可以通过在应用程序入口点内的Application.Run调用之前添加调用来完成此操作。例如:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();   //Add this line
        Application.Run(new Form1());
    }

如果您在Visual Basic .Net项目中,可以通过转到项目属性,然后在“应用程序”属性页上选中“启用应用程序框架”和“启用XP视觉样式”复选框来选择此项。 / p>