我想在特定條件下(不一定是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