Жирный текст для вкладки - PullRequest
       12

Жирный текст для вкладки

6 голосов
/ 08 октября 2008

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

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

Кажется, должен быть более легкий путь.

Как ...

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

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

Ответы [ 3 ]

5 голосов
/ 08 октября 2008

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

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

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

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

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

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

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

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

1 голос
/ 09 февраля 2011
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;
}
1 голос
/ 08 октября 2008

Простой способ присвоить элементам управления вкладками разные метки в зависимости от значения поля - изменить сам заголовок:

Например:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...