如何使 TabPage 的标题文本加粗?

Posted

技术标签:

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

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

【问题讨论】:

你想加粗什么?标签标题,还是标签页的内容? Winform。我想把标签标题加粗。 见这里:***.com/questions/180563/bold-text-for-a-tab-control 【参考方案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。

【讨论】:

以上是关于如何使 TabPage 的标题文本加粗?的主要内容,如果未能解决你的问题,请参考以下文章

如何增加文本的笔画或使图像中的文本加粗?在 Python 中

如何在运行时在android中使部分文本加粗?

使 ZPL 标签中的文本加粗或加下划线?

如何清除嵌套在 TabControl、TabPage 和 2 个面板中的文本框?

我怎样才能使 WinForms TabPage 标题宽度适合它的标题?

在文本框中使单词加粗