自定义TabControl的Item的显示样式

来源:互联网 发布:2016银行同业业务数据 编辑:程序博客网 时间:2024/06/15 05:30

       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上:


       因为该显示样式并不是重绘,实现起来比较繁琐,所以就不在博文中贴出代码。感兴趣的可以直接下载该程序,程序中包含了所有实现代码。

0 0