C# WinForm TabControl美化

本文详细介绍了如何在Windows Forms中设置TabControl的DrawMode为OwnerDrawFixed,调整ItemSize以适应文本长度,并实现Tab页选中和未选中状态下的不同样式。通过tabModuleMainItem_DrawItem方法,控制了字体、背景和前景颜色,实现了文本居中显示。
摘要由CSDN通过智能技术生成

窗口Load加下面代码,ItemSize根据自己显示文本长度调整

            #region tabMainItem属性设置
            this.tabModuleMainItem.DrawMode = TabDrawMode.OwnerDrawFixed;
            this.tabModuleMainItem.Alignment = TabAlignment.Top;
            this.tabModuleMainItem.SizeMode = TabSizeMode.Fixed;
            this.tabModuleMainItem.Multiline = true;
            this.tabModuleMainItem.ItemSize = new Size(70, 26);
            this.tabModuleMainItem.DrawItem += new DrawItemEventHandler(tabModuleMainItem_DrawItem);
            #endregion


选项卡重绘函数

        private void tabModuleMainItem_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
        {
            Font font;
            Brush bshBack;
            Brush bshFore;
            if (e.Index == this.tabModuleMainItem.SelectedIndex)
            {
                font = new Font("微软雅黑", 12.5f, FontStyle.Bold);
                bshBack = new SolidBrush(Color.Yellow);
                bshFore = Brushes.Black;
            }
            else
            {
                font = new Font("微软雅黑", 12f, FontStyle.Regular);
                bshBack = new SolidBrush(Color.Gray);
                bshFore = new SolidBrush(Color.White);
            }

            StringFormat sftTab = new StringFormat();
            sftTab.LineAlignment = StringAlignment.Center;
            sftTab.Alignment = StringAlignment.Center;

            e.Graphics.FillRectangle(bshBack, e.Bounds);
            Rectangle recTab = e.Bounds;
            recTab = new Rectangle(recTab.X, recTab.Y + 4, recTab.Width, recTab.Height - 8);
            e.Graphics.DrawString(this.tabModuleMainItem.TabPages[e.Index].Text, font, bshFore, recTab, sftTab);
        }

注意:tabModuleMainItem是我自己控件的名称,根据自己实际控件名称修改


效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值