如何在c#中更改tabcontainer标签栏的背景颜色?
我没有找到任何标签容器的属性来更改包含标签的栏的背景颜色我该怎么办?
http://rajeshkm.blogspot.com/2006/07/how-to-change-color-of-tab-control-in.html
请务必阅读第一条评论,因为它包含一个可以让代码编译的修正。
借用(和更正)的代码警报:
private void ChangeTabColor(object sender, DrawItemEventArgs e) { Font TabFont; Brush BackBrush = new SolidBrush(Color.Green); //Set background color Brush ForeBrush = new SolidBrush(Color.Yellow);//Set foreground color if (e.Index == this.tabControl1.SelectedIndex) { TabFont = new Font(e.Font, FontStyle.Italic | FontStyle.Bold); } else { TabFont = e.Font; } string TabName = this.tabControl1.TabPages[e.Index].Text; StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Center; e.Graphics.FillRectangle(BackBrush, e.Bounds); Rectangle r = e.Bounds; r = new Rectangle(rX, rY + 3, r.Width, r.Height - 3); e.Graphics.DrawString(TabName, TabFont, ForeBrush, r, sf); //Dispose objects sf.Dispose(); if (e.Index == this.tabControl1.SelectedIndex) { TabFont.Dispose(); BackBrush.Dispose(); } else { BackBrush.Dispose(); ForeBrush.Dispose(); } }
要在代码中使用它,请将此行放在表单的load事件中:
tabControl1.DrawItem += ChangeTabColor.
TabControl的背景颜色是从其父级inheritance的。
在窗体上放置一个与TabControl具有相同位置和大小的面板,将TabControl放在此面板中并将Dock设置为“Fill”。
或者代码中的相同方法:
private void Form1_Load(object sender, EventArgs e) { Panel tabBackground = new Panel { Location = tabControl1.Location, Size = tabControl1.Size, // Your color here BackColor = Color.Magenta }; tabBackground.Controls.Add(tabControl1); Controls.Add(tabBackground); tabControl1.Dock = DockStyle.Fill; }