0

如果您将 .NET 中的标准选项卡控件用于选项卡页并尝试稍微更改外观,那么您可以更改选项卡页的背景颜色,但不能更改选项卡控件。该属性可用,您可以设置它但它没有效果。如果您更改页面的背景颜色而不是选项卡控件的背景颜色,它看起来......嗯,非常难看。

我知道微软不希望它被设置。MSDN : '此属性支持 .NET Framework 基础结构,不打算直接从您的代码中使用。该成员对该控件没有意义。' 仅用于支持 .NET 基础结构的颜色的控件属性?...难以置信。

多年来,我希望微软会改变它,但他们没有。我创建了自己的 TabControl 类,它覆盖了paint 方法来解决这个问题。但这真的是最好的解决方案吗?

这个控件不支持 BackColor 的原因是什么?你有什么解决方案来解决这个问题?有没有比覆盖绘画方法更好的解决方案?

4

3 回答 3

2

Rajesh 博客中的解决方案非常有用,但它只为控件的选项卡部分着色。就我而言,我在不同颜色的背景上有一个 tabcontrol。选项卡本身是灰色的,这不是问题,但选项卡右侧的区域显示为灰色条带。

要将此颜色更改为背景颜色,您需要将以下代码添加到 DrawItem 方法(如 Rajesh 的解决方案中所述)。我正在使用 VB.Net:

...

Dim r As Rectangle = tabControl1.GetTabRect(tabControl1.TabPages.Count-1)
Dim rf As RectangleF = New RectangleF(r.X + r.Width, r.Y - 5, tabControl1.Width - (r.X + r.Width), r.Height + 5)
Dim b As Brush = New SolidBrush(Color.White)
e.Graphics.FillRectangle(b, rf)

...

基本上,您需要将由最后一个选项卡的右侧组成的矩形放到选项卡控件的右侧,然后将其填充为所需的颜色。

于 2008-11-06T10:49:52.640 回答
1

选项卡的背景颜色似乎由操作系统的显示属性控制。特别是在外观选项卡下,Windows 和按钮属性 (Windows XP)。当设置为 Windows 经典样式时,选项卡永远不会改变颜色。当设置为 Windows XP 样式时,它至少会在选中时从灰色变为白色。所以无法控制背景颜色是一个功能!

于 2008-10-17T22:47:05.367 回答
0

谢谢,劳拉。你帮助我走上了正轨。我已经找到了 Oskar 提供的链接,但最后没有为地带做任何事情。

最后,我不得不进行相当多的更改,因为我需要表单上的背景图像来渗透,或者如果父级是没有背景图像的东西,背景色。我还需要图标来显示它们是否存在。我对我的TabControl BackColor 修复帖子中的所有代码进行了完整的记录。

于 2009-05-01T04:59:52.980 回答