本文實例講述了C#更改tabControl選項卡顏色的方法。分享給大家供大家參考,具體如下:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17private
void
Form1_Load(
object
sender, EventArgs e)
{
this
.tabControl1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
this
.tabControl1.DrawItem +=
new
DrawItemEventHandler(
this
.tabControl1_DrawItem);
}
private
void
tabControl1_DrawItem(
object
sender, System.Windows.Forms.DrawItemEventArgs e)
{
StringFormat sf =
new
StringFormat();
sf.LineAlignment = StringAlignment.Center;
sf.Alignment = StringAlignment.Center;
if
(e.Index == tabControl1.SelectedIndex)
e.Graphics.FillRectangle(Brushes.Red, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);
else
e.Graphics.FillRectangle(Brushes.White, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);
e.Graphics.DrawString(((TabControl)sender).TabPages[e.Index].Text,
System.Windows.Forms.SystemInformation.MenuFont,
new
SolidBrush(Color.Black), e.Bounds, sf);
}
1.在Form類的構造函數中添加下列語句:
? 1 2this
.tabControl1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
this
.tabControl1.DrawItem +=
new
DrawItemEventHandler(
this
.tabControl1_DrawItem);
2.實現下列函數:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24private
void
tabControl1_DrawItem(
object
sender, System.Windows.Forms.DrawItemEventArgs e)
{
Font fntTab;
Brush bshBack;
Brush bshFore;
if
( e.Index ==
this
.tabControl1.SelectedIndex)
{
fntTab =
new
Font(e.Font, FontStyle.Bold);
bshBack =
new
System.Drawing.Drawing2D.LinearGradientBrush(e.Bounds, SystemColors.Control, SystemColors.Control, System.Drawing.Drawing2D.LinearGradIEntMode.BackwardDiagonal);
bshFore = Brushes.Black;
}
else
{
fntTab = e.Font;
bshBack =
new
SolidBrush(Color.Blue );
bshFore =
new
SolidBrush(Color.Black);
}
string
tabName =
this
.tabControl1.TabPages[e.Index].Text;
StringFormat sftTab =
new
StringFormat();
e.Graphics.FillRectangle(bshBack, e.Bounds);
Rectangle recTab = e.Bounds;
recTab =
new
Rectangle( recTab.X, recTab.Y + 4, recTab.Width, recTab.Height - 4);
e.Graphics.DrawString(tabName, fntTab, bshFore, recTab, sftTab);