我在一个 WinForms 项目中工作。
我在 Windows 中激活了一个深色主题,这是聚焦时的默认组合框:
这是它没有焦点的时候:
当控件失去焦点时会出现一个可怕而疯狂的白色边框,我想在不禁用项目中的 XP 样式的情况下避免这种情况。
我知道也许唯一的方法是继承控件来制作我自己的控件,问题是我不知道我需要对控件做什么,也许更改 setstyle 属性或者我不知道。
我在一个 WinForms 项目中工作。
我在 Windows 中激活了一个深色主题,这是聚焦时的默认组合框:
这是它没有焦点的时候:
当控件失去焦点时会出现一个可怕而疯狂的白色边框,我想在不禁用项目中的 XP 样式的情况下避免这种情况。
我知道也许唯一的方法是继承控件来制作我自己的控件,问题是我不知道我需要对控件做什么,也许更改 setstyle 属性或者我不知道。
我认为您正在尝试解决不在您的应用程序范围内的问题。这不只是您正在使用的主题的问题吗?
Windows 有许多主题。仍然支持的主要主题是 Classic(XP 之前)、Luna (XP)、Aero (Vista/Win7) 和 Modern (Windows 8)。所有这些都可以定制以创建无限数量的可能场景。
大多数 Windows 窗体控件都基于操作系统根据这些系统主题绘制的 Win32 控件。
因此,您必须了解,在您正在测试的机器上,您所看到的内容与应用程序用户在具有不同用户偏好的不同版本的 Windows 上看到的内容会有很大差异。
一个简单的事实是,如果您使用 WinForms 基本控件,您确实应该尽可能将外观控制权交给操作系统。
创建自己的应用程序主题也被广泛接受,用户无法更改或他们必须从您创建的预定主题集中进行选择。这方面的示例包括 Google Chrome、iTunes、Winamp 等。使用简单的 Win32 控件执行此操作通常需要大量工作,除非您使用诸如 WPF 之类的东西来使其更容易。
重要的是,您无法真正选择应用程序的哪些部分来主题化。如果您希望它看起来一致,您要么自己负责整个主题,要么遵循使用系统资源颜色(如 ControlText、ActiveBorder、AppWorkspace 等)的 Windows 标准。