Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 为什么';NET中TabControl的背景色是否有效?_.net_Controls_Tabcontrol - Fatal编程技术网

.net 为什么';NET中TabControl的背景色是否有效?

.net 为什么';NET中TabControl的背景色是否有效?,.net,controls,tabcontrol,.net,Controls,Tabcontrol,如果您对选项卡页使用.NET中的标准选项卡控件,并尝试稍微更改外观,则可以更改选项卡页的背景色,但不能更改选项卡控件的背景色。该属性可用,您可以设置它,但它无效。如果更改页面的背景颜色而不是选项卡控件的背景颜色,它看起来。。。嗯,很难看 我知道Microsoft不希望设置它。:'此属性支持.NET Framework基础结构,不打算直接从代码中使用。此成员对此控件没有意义。“仅用于支持.NET基础结构的颜色的控件属性。。。难以置信 多年来,我希望微软能改变这一点,但他们没有。我创建了自己的Tab

如果您对选项卡页使用.NET中的标准选项卡控件,并尝试稍微更改外观,则可以更改选项卡页的背景色,但不能更改选项卡控件的背景色。该属性可用,您可以设置它,但它无效。如果更改页面的背景颜色而不是选项卡控件的背景颜色,它看起来。。。嗯,很难看

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

多年来,我希望微软能改变这一点,但他们没有。我创建了自己的TabControl类,该类重写paint方法以解决此问题。但这真的是最好的解决方案吗


不支持此控件的背景色的原因是什么?你的解决方案是什么?有比覆盖绘制方法更好的解决方案吗?

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

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

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)

...

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

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)

...

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

谢谢,LauraM。你帮助我走上了正确的道路。我已经找到了奥斯卡提供的链接,但这对最后的脱衣舞没有任何帮助


最后,我不得不做了一些改变,因为我需要在表单上添加一个背景图像,或者如果父对象没有背景图像,则需要背景颜色。我还需要图标来显示它们是否存在。我有一篇完整的文章,里面有我所有的代码。

谢谢,劳拉姆。你帮助我走上了正确的道路。我已经找到了奥斯卡提供的链接,但这对最后的脱衣舞没有任何帮助


最后,我不得不做了一些改变,因为我需要在表单上添加一个背景图像,或者如果父对象没有背景图像,则需要背景颜色。我还需要图标来显示它们是否存在。我已经写了一篇完整的文章,里面有我所有的代码。

问微软为什么做了一些事情是有点无法回答的。你应该改写你的问题。问她为什么做某事有点难以回答。你应该改写你的问题。非常感谢你留下这篇博文。哦,等等,不,你没有。非常感谢你留下那篇博文。哦,等等,不,你没有。