2010-02-24 105 views
4

我在C#Windows应用程序中有一些tabControl。它有一些tabPages。有没有人kwows如何使tabPage文本变得粗体..?如何使TabPage的标题文字变为粗体?

+4

WPF or Winform? – 2010-02-24 13:51:20

+0

你想大胆做些什么?标签标题或标签页的内容? – 2010-02-24 13:54:05

+0

Winform。我想大胆的标题标题。 – Vytas999 2010-02-24 14:28:08

回答

9
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)); 

     } 
+0

只需添加到:受影响的控件的'DrawMode'应设置为'TabDrawMode.OwnerDrawFixed',这使得使用'DrawItem'事件是强制性的(如果您将此方法的代码留空,则标签的标题栏也将为空白) – DrCopyPaste 2016-05-03 07:56:00

3

在Winforms中,您可以更改DrawMode并绘制自己的所有标题。

查看MSDN Example

相关问题