2008-10-07 4 views
6

Я хотел бы выделить текст для закладки на определенных условиях (не обязательно GotFocus). Верно ли, что единственный простой способ сделать это - переопределить событие DrawItem для элемента управления вкладками?Полужирный текст для управления вкладкой

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

Похоже, что должно быть проще.

Как ...

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

Это не работает, очевидно.

ответ

4

Когда вы устанавливаете свойство Font на TabPage, вы устанавливаете шрифт по умолчанию для всех элементов управления на этой вкладке. Однако вы не устанавливаете его для заголовка.

При выполнении следующего кода:

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

Все элементы управления на этой странице, теперь будет жирным шрифтом по умолчанию, который не является (я предполагаю), что вы хотите.

Шрифт заголовка (то есть сама вкладка) управляется свойством шрифта TabControl. Если вы хотите изменить свой код на:

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

Вы увидите, что в действии. Тем не менее, он меняет шрифт для всех вкладки на дисплее, что тоже не так, я предполагаю, что вы хотите.

Итак, используя элемент управления вкладками WinForms по умолчанию, вы (я полагаю) ограничены техникой в ​​указанной вами ссылке. В качестве альтернативы вы можете приступить к рассмотрению сторонних элементов управления, таких как те, которые обсуждаются в thesequestions по адресу StackOverflow.

+0

имейте в виду, что `` Font` реализует IDisposable`, поэтому он всегда должен вызывать метод `Dispose`, когда он больше не требуется. по этой причине вам, вероятно, следует создать свой «Font» в качестве поля и убедиться, что вы вызываете его методом `Dispose` в методе` Dispose` `Form` – 2010-11-05 11:55:20

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 
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; 
} 
Смежные вопросы