修改TabControl控件DrawMode属性为OwnerDrawFixed。
使用TabControl控件DrawItem事件实现选项卡风格自定义绘制功能。
private void TabControlDrawTabPage(object sender, DrawItemEventArgs e)
{
TabControl tabControl = (TabControl)sender;
Font tabPageFont = new Font("微软雅黑", 13, FontStyle.Bold, GraphicsUnit.Pixel); ;
Brush tabPageBackBrush = new SolidBrush(Color.FromArgb(171, 171, 171));
Brush tabPageFontBrush = new SolidBrush(Color.White);
Brush selectedTabPageBackBrush = new SolidBrush(Color.FromArgb(100, 100, 100));
Brush selectedTabPageFontBrush = new SolidBrush(Color.White);
Brush tabControlBackBrush = new SolidBrush(Color.FromArgb(171, 171, 171));
Pen borderPen = new Pen(Color.FromArgb(0, 0, 0));
StringFormat stringFlags = new StringFormat(StringFormatFlags.DirectionRightToLeft);
stringFlags.Alignment = StringAlignment.Center;
stringFlags.LineAlignment = StringAlignment.Center;
e.Graphics.FillRectangle(tabControlBackBrush, tabControl.ClientRectangle.X, tabControl.ClientRectangle.Y, tabControl.ClientRectangle.Size.Width, tabControl.ClientRectangle.Height);
for (int i = 0; i < tabControl.TabPages.Count; i++)
{
Rectangle tabPageRectangle = tabControl.GetTabRect(i);
if (tabControl.TabPages[i] != tabControl.SelectedTab)
{
e.Graphics.FillRectangle(tabPageBackBrush, tabPageRectangle);
e.Graphics.DrawString(tabControl.Controls[i].Text, tabPageFont, tabPageFontBrush, tabPageRectangle, stringFlags);
}
else
{
e.Graphics.FillRectangle(selectedTabPageBackBrush, tabPageRectangle);
e.Graphics.DrawString(tabControl.Controls[i].Text, tabPageFont, selectedTabPageFontBrush, tabPageRectangle, stringFlags);
}
e.Graphics.DrawRectangle(borderPen, tabPageRectangle);
}
tabPageBackBrush.Dispose();
tabPageFont.Dispose();
tabPageFontBrush.Dispose();
tabControlBackBrush.Dispose();
}