自定义TabControl的Item的显示样式

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


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

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值