C# WinForm TabControl美化

窗口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是我自己控件的名称,根据自己实际控件名称修改


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


版权声明:本文为CAI____NIAO原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。