Windows Forms 应用程序 - 视觉样式?

7
我会尽可能简单地解释。
在 Windows Forms 应用程序中创建的按钮如下所示: enter image description here 如果我手动创建一个表单,那么我创建的按钮将如下所示: enter image description here 我仔细查看了 Windows Forms 应用程序,并没有发现任何改变按钮视觉样式的代码。
这是为什么呢?有没有简单的解释?
提前致谢。

1
你如何手动创建表单? - Davide Piras
也许这个链接会有帮助:http://msdn.microsoft.com/zh-cn/library/aa289524(v=vs.71).aspx - Hossein Mobasher
还要看一下这篇文章,各种评论中有很多有用的信息。http://stackoverflow.com/questions/8127597/windows-forms-color-variation-between-windows-7-and-xp/ - Johnie Karr
@DavidePiras 我的意思是,我在一个不是“Windows Forms Application”的项目中创建了一个表格。 - Acidic
4个回答

11
您需要调用 EnableVisualStyles 方法,该方法默认在调用 Application.Run 之前的 ProgramMain 方法中被调用(当您创建一个 Windows Forms 项目时,自动生成代码)。
此方法启用应用程序的视觉样式。视觉样式是形成操作系统主题的颜色、字体和其他视觉元素。如果控件和操作系统都支持它,则控件将使用视觉样式进行绘制。要产生效果,必须在应用程序中创建任何控件之前调用 EnableVisualStyles();通常,EnableVisualStyles() 是 Main 函数中的第一行。在调用 EnableVisualStyles() 时,不需要单独的清单来启用视觉样式。

不知怎么的,我忽略了这个……谢谢! - Acidic

3

确保将按钮的属性 UseVisualStyleBackColor 设置为 true,并在启动代码中调用 Application.EnableVisualStyles();

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new frmAddress());
    }

}

编辑: 使用“UseVisualStyleBackColor”的效果:

enter image description here


“EnableVisualStyles” 确实是我在寻找的,但按钮的 “UseVisualStyleBackColor” 属性似乎对我没有任何影响。 - Acidic
在我的Win7上,UseVisualStyleBackColor = true 让我的按钮看起来有点像水平圆柱体。否则它们具有Win XP的外观,但看起来更或多或少是平的(差异很小)。 - Olivier Jacot-Descombes

1
即使启用了视觉样式(默认情况下),按钮的显示部分仍然受操作系统控制,超出了程序的控制范围。在标准界面的 Windows 7 上运行相同的程序与在经典模式下运行时看起来是不同的。
加粗强调这段文档摘录以说明这一点。

http://msdn.microsoft.com/en-us/library/y6kzhf8d(VS.80).aspx

Windows XP引入了新的外观和感觉到Windows用户界面,控件具有圆角并在鼠标悬停时更改颜色。默认情况下,使用Visual Basic创建的基于Windows的应用程序自动支持视觉样式,也称为Windows XP主题。当在不支持Windows XP主题的平台上运行时,应用程序将恢复传统的Windows外观和感觉。如果您不希望应用程序支持视觉样式,则可以更改项目设计器的应用程序页面上的属性。
此外,请参阅链接http://msdn.microsoft.com/en-us/library/ms171733(VS.80).aspx中的“检查视觉样式支持”部分。
以下条件必须满足才能使视觉样式起作用:
- 操作系统支持视觉样式。 - 用户已在操作系统中启用视觉样式。 - 应用程序中启用了视觉样式。 - 正在使用视觉样式来绘制应用程序窗口的客户区域。

1
我遇到了类似的问题。在VS 2010之前,创建自定义清单文件可以解决问题。但是从Visual Studio 2010开始,这种方法不再适用,因为VS会在My Project文件夹中创建一个名为app.manifest的新文件。 因此,要启用视觉样式,您只需在Visual Studio中编辑此文件,并取消下面的行的注释。
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接