我想在特定条件下(不一定是GotFocus)为某个标签页加粗文本。是否真的唯一的'最简单的方法是通过覆盖选项卡控件的DrawItem事件?标签控件的粗体文本
http://www.vbforums.com/showthread.php?t=355093
看起来应该有一个更简单的方法。
像...
tabControl.TabPages(index).Font = New Font(Me.Font, FontStyle.Bold)
这不工作,效果显着。
我想在特定条件下(不一定是GotFocus)为某个标签页加粗文本。是否真的唯一的'最简单的方法是通过覆盖选项卡控件的DrawItem事件?标签控件的粗体文本
http://www.vbforums.com/showthread.php?t=355093
看起来应该有一个更简单的方法。
像...
tabControl.TabPages(index).Font = New Font(Me.Font, FontStyle.Bold)
这不工作,效果显着。
当您在TabPage上设置字体属性时,您正在为该标签页上的所有控件设置默认字体。但是,您并未将其设置为标题。
当你执行下面的代码:
tabControl.TabPages(index).Font = New Font(Me.Font, FontStyle.Bold)
该网页上的所有控件现在将默认为,这是不是(我假设),你想要什么大胆。
标题的字体(即标签本身)由TabControl的Font属性控制。如果您要将您的代码更改为:
tabControl.Font = New Font(Me.Font, FontStyle.Bold)
您将在行动中看到这一点。但是,它会更改的所有显示的选项卡的字体,这也不是,我假设,你想要什么。
因此,使用默认的WinForms选项卡控件,您(我相信)仅限于您发布的链接中的技术。或者,您可以开始查看第三方控件,例如thesequestions中讨论的StackOverflow。
一个简单的方法,让标签根据需要控制字段的值不同的标签是更改标题本身:
例如:
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
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;
}
记住,`Font`实现` IDisposable“,因此当它不再需要时,它应该总是调用Dispose方法。出于这个原因,你应该创建你的`Font`作为一个字段,并确保你在`Form`的`Dispose`方法中调用它的`Dispose`方法 – 2010-11-05 11:55:20