更改tabControl选项卡颜色

Posted on 2010-08-03 15:35  严武  阅读(2734)  评论(0编辑  收藏  举报

private void Form1_Load(object sender, EventArgs e)
        {
            this.tabControl1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
            this.tabControl1.DrawItem += new DrawItemEventHandler(this.tabControl1_DrawItem);
        }
        private void tabControl1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
        {
            StringFormat sf = new StringFormat();

            sf.LineAlignment = StringAlignment.Center;
            sf.Alignment = StringAlignment.Center;

            if (e.Index == tabControl1.SelectedIndex)

                e.Graphics.FillRectangle(Brushes.Red, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);

            else

                e.Graphics.FillRectangle(Brushes.White, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);

            e.Graphics.DrawString(((TabControl)sender).TabPages[e.Index].Text,


            System.Windows.Forms.SystemInformation.MenuFont, new SolidBrush(Color.Black), e.Bounds, sf);

        }

 

 

 

 

1.在Form类的构造函数中添加下列语句:
this.tabControl1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
this.tabControl1.DrawItem += new DrawItemEventHandler(this.tabControl1_DrawItem);

2.实现下列函数:
         private void tabControl1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
         {
             Font fntTab;
             Brush bshBack;
             Brush bshFore;

             if ( e.Index == this.tabControl1.SelectedIndex)
         {
                 fntTab = new Font(e.Font, FontStyle.Bold);
                 bshBack = new System.Drawing.Drawing2D.LinearGradientBrush(e.Bounds, SystemColors.Control, SystemColors.Control, System.Drawing.Drawing2D.LinearGradientMode.BackwardDiagonal);
                 bshFore = Brushes.Black;
             }
             else
             {
                 fntTab = e.Font;
                 bshBack = new SolidBrush(Color.Blue );
                 bshFore = new SolidBrush(Color.Black);

             }
     
             string tabName   = this.tabControl1.TabPages[e.Index].Text;
             StringFormat sftTab = new StringFormat();
             e.Graphics.FillRectangle(bshBack, e.Bounds);
             Rectangle   recTab = e.Bounds;
             recTab = new Rectangle( recTab.X,   recTab.Y + 4,   recTab.Width,   recTab.Height - 4);
             e.Graphics.DrawString(tabName, fntTab, bshFore, recTab, sftTab);

         }

Copyright © 2024 严武
Powered by .NET 8.0 on Kubernetes