TabControl原始的Item样式并不是十分的好看,所以,我们可能需要重新绘制自定义的显示样式。博文中将会介绍两种自定义的Item的显示样式,博文中也会分别提供份一份子丰的程序,可以直接下载。
1. 显示样式1
通过TabControl的DrawItem事件实现Item样式的重绘。
下载:点击打开链接
http://download.csdn.net/detail/softimite_zifeng/9689086
在重绘之前首先需要设置TabControl的属性,可以在窗口的构造函数中进行设置,代码如下:
public Form1()
{
InitializeComponent();
//设置TabControl的属性
TabControlSet();
}
//设置TabControl的属性
private void TabControlSet()
{
tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed;
tabControl1.Alignment = TabAlignment.Left;
tabControl1.SizeMode = TabSizeMode.Fixed;
tabControl1.ItemSize = new Size(82, 250);
}
TabControl的DrawItem事件:
private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
Graphics g = e.Graphics;
Font font = new Font("微软雅黑", 16.0f, FontStyle.Bold);
SolidBrush brush = new SolidBrush(Color.White);
RectangleF rectangle = (RectangleF)(tabControl1.GetTabRect(e.Index));
RectangleF rectangle2 = new RectangleF(rectangle.X + 5, rectangle.Y + 5, rectangle.Width - 10, rectangle.Height - 10);
g.FillRectangle(new SolidBrush(SystemColors.Highlight), rectangle2);
StringFormat sformat = new StringFormat();
sformat.LineAlignment = StringAlignment.Center;
sformat.Alignment = StringAlignment.Center;
g.DrawString(((TabControl)sender).TabPages[e.Index].Text, font, brush, rectangle2, sformat);
绘制边框
//using (Pen pen = new Pen(Color.Red, 1))
//{
// pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
// g.DrawLine(pen, rectangle.X + 3, rectangle.Y + 3, rectangle.X + 3, rectangle.Y + 3 + rectangle.Height - 6);
// g.DrawLine(pen, rectangle.X + 3 + rectangle.Width - 6, rectangle.Y + 3, rectangle.X + 3 + rectangle.Width - 6, rectangle.Y + 3 + rectangle.Height - 6);
// if (e.Index == 0)
// {
// g.DrawLine(pen, rectangle.X + 3, rectangle.Y + 3, rectangle.X + 3 + rectangle.Width - 6, rectangle.Y + 3);
// }
// if (e.Index == tabControl1.TabPages.Count - 1)
// {
// g.DrawLine(pen, rectangle.X + 3, rectangle.Y + 3 + rectangle.Height - 6, rectangle.X + 3 + rectangle.Width - 6, rectangle.Y + 3 + rectangle.Height - 6);
// }
//}
}
2. 显示样式2
通过自定义一个Panel实现TabItem的功能,其实这不是一个重新绘制。该显示样式,当某个TagPage被选中时,TabPage的文字颜色会变为黑色,且大小会稍微变大;当鼠标停留在某个Tabpage上,TabPage的文字颜色会变为紫色,且大小会变大,当鼠标移开之后TabPage恢复原样。该样式中还在最上方增加了一个Title选项,可以用来说明TabControl的用处。
下载:点击打开链接
http://download.csdn.net/detail/softimite_zifeng/9689042
选中tabPage5:
鼠标停留在tabPage3上:
因为该显示样式并不是重绘,实现起来比较繁琐,所以就不在博文中贴出代码。感兴趣的可以直接下载该程序,程序中包含了所有实现代码。