继承默认的ComboBox以更改边框颜色或禁用它

时间:2013-09-09 13:59:26

标签: c# .net vb.net winforms user-controls

我正在WinForms项目中工作。

我在Windows中激活了一个黑暗的主题,当它聚焦时,这是一个默认的组合框:

enter image description here

这就是它没有焦点的时候:

enter image description here

当控制失去焦点时,会出现一个可怕且疯狂的白色边框,我希望在项目中禁用XP样式时避免使用。

我知道也许唯一的方法是继承控件来制作我自己的,问题是我不知道我需要用控件做什么,也许更改setstyle属性或者我不知道。

1 个答案:

答案 0 :(得分:8)

我认为您正在尝试解决不在您的应用范围内的问题。这不仅仅是您正在使用的主题问题吗?

Windows有很多主题。仍然支持的主要主题是Classic(前XP),Luna(XP),Aero(Vista / Win7)和Modern(Windows 8)。所有这些都可以定制,以创建无限多种可能的场景。

大多数Windows窗体控件都基于Win32控件,这些控件由操作系统根据这些系统主题绘制。

所以你必须明白,在机器上,你正在测试你看到的内容会因应用程序的用户在不同用户偏好的不同版本上看到的内容而有很大差异。

简单的事实是,如果你使用WinForms基本控件,你真的应该尽可能地放弃对OS外观的控制。

它也被广泛接受,用于创建您自己的应用程序主题,用户无法更改或者必须从您创建的预定主题集中进行选择。这方面的例子包括Google Chrome,iTunes,Winamp等。使用简单的Win32控件执行此操作通常是非常繁重的工作,除非您使用类似WPF的内容,这样可以更轻松。

重要的是,您无法真正选择应用程序的哪些部分作为主题。如果您希望它看起来一致,您可以自己负责整个主题,也可以遵循Windows标准使用系统资源颜色,如ControlText,ActiveBorder,AppWorkspace等。