0

以前我经常使用 VB6 来开发几个个人项目。升级到 Windows 7 后,我决定使用 vb.net Express Edition 2010。

如果我希望我的 VB6 应用程序与 Windows 的视觉风格融为一体,我将使用此处描述的代码和技术。简而言之,我会在应用程序中使用 Manifest 文件和几个调用,并且大多数元素看起来与应用的 XP 主题相似。如果它在 2000、95 或 98 上运行,那么它看起来就像一个标准的 Windows 应用程序。一切都很好。

现在我转到 vb.net,我编写了一个简单的“Hello, world”应用程序,但我完全不知道如何使它看起来像 Windows 7 主题(例如,字体与系统字体匹配,并且小部件的样式正确)。

只是更改字体是一种黑客行为,并且在设置不同或运行默认字体不同的不同 Windows 版本的机器上会显得格格不入。

无论 Windows 版本如何,如何确保我的应用程序与应用的 Windows 主题匹配?

4

1 回答 1

1

如果您创建 Windows 窗体应用程序,其中很多都是自动的。他们将(大部分)使用标准的原生 Windows 控件,这些控件使用主题颜色绘制自己。但也有例外:

  • 表单项模板使用名为 Microsoft Sans Serif 的默认字体。您必须将其更改为 Segoe UI 以匹配 Vista/Win7 默认值。这仅对 Form 类是必需的,您放在它上面的所有控件都会自动继承该字体。在 XP 机器上,Windows 字体映射器会注意到字体丢失并自动回退到 MSS。

  • MenuStrip 类使用自定义呈现来绘制菜单项。当您将 RenderMode 属性更改为 System 时,它会尝试匹配 Windows 样式,但它的绘制方式与 Win7 样式不匹配。右键单击工具箱,选择项目并选择 MainMenu。这是一个旧版本,使用 Windows 来绘制菜单,因此它可以产生正确的主题外观。

  • ToolStrip 的一个非常相似的问题。它的旧版本是工具栏。这是一个难以下咽的工具,它不使用钢筋,使工具栏看起来又平又丑。

WPF 中也有类似的问题,但另外一个问题是 WPF 不使用任何标准的 Windows 控件。并在微妙的地方弄错了。

于 2010-10-08T12:41:44.253 回答