2008-09-15 37 views
0

如果在.NET中使用标准选项卡控件作为标签页,并尝试稍微改变外观,则可以更改标签页的背面颜色,但不能更改标签控件。该物业是可用的,你可以设置它,但它没有效果。如果你改变页面的背面颜色而不是标签控件的颜色,它看起来......很难看。为什么BackColor不能在.NET中用于TabControls?

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

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

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

+0

问为什么MS做了一些事情是有点无法回答的。你应该改写你的问题。 – GEOCHET 2008-09-15 21:45:23

回答

1

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

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) 

... 

基本上你需要得到所做的最后一个选项卡的右侧的矩形到标签控件的右边,然后填写到您想要的颜色。

0

谢谢,LauraM。你帮助我走上正轨。我已经找到了奥斯卡提供的链接,但最终没有为这个地带做任何事情。

最后,我不得不改变一下,因为我需要表单上的背景图像流血,或者如果父母是没有背景图像的背景颜色,背景颜色。我还需要图标来显示他们是否在场。我用我的TabControl BackColor fix post中的所有代码进行了全面的介绍。

+1

非常感谢您保留此博客文章。哦,等等,不,你没有。 – 2015-10-01 18:50:23

相关问题