2008-10-07 29 views
6

Me gustaría poner el texto en negrita para una página con pestañas bajo ciertas condiciones (no necesariamente, GotFocus). ¿Es cierto que la única forma más fácil de hacerlo es anulando el evento DrawItem para el control de pestañas?Texto en negrita para un control de tabulación

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

Parece que debe haber una manera más fácil.

Como ...

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

eso no funciona, obviamente.

Respuesta

4

Cuando establece la propiedad Font en una TabPage, está configurando la fuente predeterminada para todos los controles en esa página de pestañas. Sin embargo, no lo está configurando para el encabezado.

Cuando se ejecuta el siguiente código:

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

Cualquier control de esa página serán ahora negrita por defecto, lo que no es (estoy suponiendo) lo que quiere.

La fuente del encabezado (es decir, la pestaña en sí) está controlada por la propiedad Fuente de TabControl. Si fueras a cambiar tu código a:

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

Lo verás en acción. Sin embargo, cambia la fuente para todas las pestañas en la pantalla, que tampoco es, supongo, lo que desea.

Por lo tanto, utilizando el control predeterminado de la pestaña WinForms, usted está (creo) limitado a la técnica en el enlace que ha publicado. Alternativamente, puede comenzar a buscar controles de terceros, como los mencionados en thesequestions en StackOverflow.

+0

tener en cuenta que '' implementa Font' IDisposable' por lo que siempre debe tener su método 'Dispose' llamado cuando ya no es necesario. por esta razón, probablemente deberías crear tu 'Fuente' como un campo y asegurarte de que llamas su método' Dispose' en el método 'Dispose' del' Form' –

1

Una manera fácil de darle ficha Controles de etiquetas diferentes en función de un valor de campo es cambiar el título en sí:

Por ejemplo:

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; 
} 
Cuestiones relacionadas