How do I make a TabPage's title text bold?

后端 未结 3 2027
陌清茗
陌清茗 2021-01-13 10:06

I have some tabControl in C# Windows app. It has some tabPages. Does anyone kwows how to make the tabPage Text to become Bold..?

3条回答
  •  隐瞒了意图╮
    2021-01-13 10:46

    You'll need to handle the DrawItem event of the TabControl to manually draw the caption. Note: DrawMode of affected control should be set to TabDrawMode.OwnerDrawFixed.

    Here is a sample:

    private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
    {
    
        Graphics g = e.Graphics;
        Brush _TextBrush;
    
        // Get the item from the collection.
        TabPage _TabPage = tabControl1.TabPages[e.Index];
    
        // Get the real bounds for the tab rectangle.
        Rectangle _TabBounds = tabControl1.GetTabRect(e.Index);
    
        if (e.State == DrawItemState.Selected)
        {
            // Draw a different background color, and don't paint a focus rectangle.
            _TextBrush = new SolidBrush(Color.Blue);
            g.FillRectangle(Brushes.Gray, e.Bounds);
        }
        else
        {
            _TextBrush = new System.Drawing.SolidBrush(e.ForeColor);
           // e.DrawBackground();
        }
    
        // Use our own font. Because we CAN.
        Font _TabFont = new Font(e.Font.FontFamily, (float)9, FontStyle.Bold, GraphicsUnit.Pixel);
        //Font fnt = new Font(e.Font.FontFamily, (float)7.5, FontStyle.Bold);
    
        // Draw string. Center the text.
        StringFormat _StringFlags = new StringFormat();
        _StringFlags.Alignment = StringAlignment.Center;
        _StringFlags.LineAlignment = StringAlignment.Center;
        g.DrawString(tabControl1.TabPages[e.Index].Text, _TabFont, _TextBrush,
                     _TabBounds, new StringFormat(_StringFlags));
    
    }
    

提交回复
热议问题