如何使 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】:您需要处理TabControl
的DrawItem
事件才能手动绘制标题。注意:受影响控件的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 中
如何清除嵌套在 TabControl、TabPage 和 2 个面板中的文本框?