如果在标签页中使用.NET中的标准选项卡控件,并尝试稍微更改外观,则可以更改选项卡页的背面颜色,但不能更改选项卡控件的背面颜色。该属性可用,您可以设置但它没有任何效果。如果你改变页面的背面颜色而不是标签控件,它看起来......呃很难看。
我知道微软不希望它被设置。 MSDN:'此属性支持.NET Framework基础结构,不能直接在您的代码中使用。此成员对此控件没有意义。'仅支持.NET基础结构的颜色的控件属性? ......很难相信。
我希望多年来微软会改变它,但事实并非如此。我创建了自己的TabControl类,它覆盖了paint方法来解决这个问题。但这真的是最好的解决方案吗?
不支持BackColor进行此控件的原因是什么?你解决这个问题的解决方案是什么?有没有比覆盖绘画方法更好的解决方案?
答案 0 :(得分: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)
...
基本上,您需要将最后一个标签右侧的矩形放在标签控件的右侧,然后将其填充到所需的颜色。
答案 1 :(得分:1)
选项卡的背景颜色似乎由操作系统的显示属性控制。具体来说,在外观选项卡,Windows和按钮属性(Windows XP)下。设置为Windows经典样式时,选项卡不会更改颜色。设置为Windows XP样式时,选择时至少会从灰色变为白色。因此无法控制背景颜色是一个功能!
答案 2 :(得分:0)
谢谢,LauraM。你帮助我走上正轨。我已经找到了Oskar提供的链接,但最后没有为条带做任何事情。
最后,我不得不改变一点,因为我需要在表格上的背景图像渗透或如果父母是没有背景图像的东西,背景颜色。我还需要图标来显示它们是否存在。我对TabControl BackColor fix post中的所有代码进行了完整的记录。