选项卡控件的粗体文本

时间:2008-10-07 21:41:10

标签: vb.net winforms

我想在某些条件下为标签页加粗文字(不一定是GotFocus)。是否真的唯一'最简单的方法是通过覆盖制表符控件的DrawItem事件?

http://www.vbforums.com/showthread.php?t=355093

似乎应该有一种更简单的方法。

喜欢......

tabControl.TabPages(index).Font = New Font(Me.Font, FontStyle.Bold)

显然这不起作用。

3 个答案:

答案 0 :(得分:5)

在TabPage上设置Font属性时,您将为该选项卡页面上的所有控件设置默认字体。但是,您没有为标题设置它。

执行以下代码时:

tabControl.TabPages(index).Font = New Font(Me.Font, FontStyle.Bold)

默认情况下,该页面上的任何控件都是粗体,这不是(我假设)你想要的。

标题的字体(即标签本身)由TabControl的Font属性控制。如果您要将代码更改为:

tabControl.Font = New Font(Me.Font, FontStyle.Bold)

你会看到这一点。但是,它会更改所有显示的标签的字体,这也不是,我假设你想要的。

因此,使用默认的WinForms选项卡控件,您(我相信)仅限于您发布的链接中的技术。或者,您可以开始查看第三方控件,例如thesequestions StackOverflow中讨论的控件。

答案 1 :(得分:1)

根据字段值为标签控制不同标签的简单方法是更改​​标题本身:

例如:

Private Sub Form_Current()
    If IsNull(Me.Subform.Form.Field_Name) Then
        Me.Tab_Name.Caption = "Tab One"
    Else
        Me.Tab_Name.Caption = "Tab One +++"
    End If
End Sub

答案 2 :(得分:1)

private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
    Font BoldFont = new Font(tabControl1.Font, FontStyle.Bold);
    e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text, BoldFont, Brushes.Black, e.Bounds);
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
    tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed;
}