【问题标题】:How do I make a TabPage's title text bold?如何使 TabPage 的标题文本加粗?
【发布时间】:2011-01-20 13:11:18
【问题描述】:

我在 C# Windows 应用程序中有一些 tabControl。它有一些标签页。有谁知道如何使 tabPage 文本变为粗体..?

【问题讨论】:

标签: c# .net winforms tabcontrol


【解决方案1】:

只需编写如下的主 TabControl 代码:

 TabControl0_1=New TabControl

 TabControl0_1.Size = New System.Drawing.Size(1900,980)

 TabControl0_1.Location=New System.Drawing.Point(5,5)

 TabControl0_1.Font = New System.Drawing.Font("Segoe UI",25!, _
                       System.Drawing.FontStyle.Bold, System.Drawing. _
                       GraphicsUnit.Point,CType(0, Byte))

这可以解决所有问题。共有 114 个标签页。

【讨论】:

    【解决方案2】:

    另一个不太优雅的选项是将父窗体/控件的 font->bold 属性设置为 true,这将使包括选项卡名称在内的所有内容变为粗体,然后在所有不需要的控件上将粗体设置为 false大胆的。

    【讨论】:

      【解决方案3】:

      您需要处理TabControlDrawItem 事件才能手动绘制标题。注意:受影响控件的DrawMode应设置为TabDrawMode.OwnerDrawFixed

      这是一个示例:

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

      【讨论】:

      • 只是补充一点:受影响控件的DrawMode 应设置为TabDrawMode.OwnerDrawFixed,这使得必须使用DrawItem-event(如果您将此方法的代码留空,则选项卡' 标题栏也将是空白的)
      【解决方案4】:

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

      请参阅MSDN Example

      【讨论】:

        猜你喜欢
        • 2015-05-22
        • 2016-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多