c# - Active TabPage 与我的控件颜色相同

标签 c# .net winforms tabcontrol tabpage

我制作了一个 TabControl 并想使用一些控件(标签、文本框、按钮和组合框下拉菜单)。问题是当我选择一个选项卡时,默认背景颜色与控件曾经所在的窗体的默认背景颜色不同。选项卡和控件的颜色太相似,看起来不太好。

我看过了,但是人们似乎说不可能给标签上色。对此有什么好的解决方案?我是否应该在选项卡内放置某种框架、标签或其他东西以使背景更暗?

最佳答案

很容易让您的标签页使用与表单相同的背景颜色:

  1. 确保要更改的 TabPage 在设计器中可见。单击它以选择它。

  2. 在属性窗口中,找到 UseVisualStyleBackColor属性,并将其设置为 False

作为奖励,一旦您将此属性设置为 False,您就可以使用其 BackColor propertyTabPage 指定您想要的任何背景颜色。 .

之所以可行,是因为您强制标签页不使用视觉样式(即 Windows 定义的主题)呈现。默认主题实际上将标签页绘制为用于绘制其他 3D 元素(如表单和按钮)的颜色略浅的阴影。问题(尤其是在 Aero 主题下)是标准 3D 元素的颜色太浅了,以至于标签页看起来几乎是白色的!

如果您对控件与窗体标准背景颜色的对比度感到满意,我建议您只需将 UseVisualStyleBackColor 属性设置为 False 并保留它在没有指定自定义背景颜色的情况下。尊重用户的默认主题通常是最佳做法,而不是尝试自己为应用程序设置皮肤。

编辑:请注意,这不会更改TabControl 顶部的选项卡本身的颜色。为此,您必须将其指定为所有者绘制并处理其 DrawItem 事件,迫使您自己完成所有绘制工作。然而,在大多数情况下,这不是必需的。

关于c# - Active TabPage 与我的控件颜色相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4265004/

相关文章:

c# - 从另一种形式调用变量 C#

c# - 更改 LongListSelector 中 TextBlock 的前景色

c# - 对使用 Contains 的列表使用 Switch 语句的可能方法

c# - 将 RichTextBox 文本转换为流 C#

VB.Net 扩展对象 IExtenderProvider

c# - 将日期时间设置为空

c# - 代码覆盖率将第三方代码纳入覆盖范围

.net - WPF:获取子 UIElement 在其父级中的位置。如果有,请忽略 RenderTransform

c# - LibGit2Sharp 如何解决冲突?

.net - 常量类库——最佳实践?