1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

VB.NET | TabControl (colocar identificadores a negrito)

Discussão em 'Programação' iniciada por diog0silva, 7 de Maio de 2009. (Respostas: 2; Visualizações: 2191)

  1. diog0silva

    diog0silva Power Member

    Boas.

    Eu estou a utilizar um TabControl, com 5 separadores, e gostava que ao carregar num separador o seu título (ou identificador) ficasse a negrito. É possivel?

    Cumprimentos.
     
  2. iznougud

    iznougud I quit My Job for Folding

    Tens de por o Tabcontrol com DrawMode = OwnerDrawFixed (isto esta nas propriedades)

    Depois tens de fazer o Override da funcao DrawItem (na janela de codigo seleccionas o tabcontrol e deves ter a acção DrawItem)

    Isso vai-te dar isto:

    Código:
    Private Sub tab_principal_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles tab_principal.DrawItem
    
    
     End Sub
    
    Agora só tens de criar o código que queres. Vou-te dar um exemplo que já usei:

    Código:
           Dim sf As New StringFormat
            Dim foreBrush As Brush = Brushes.Black
            Dim f As Font
    
            If e.Index = tab_principal.SelectedIndex Then
                f = New Font(e.Font, FontStyle.Bold)
    
                Dim tabName As String = tab_principal.TabPages(e.Index).Text.TrimStart
    
                Dim rect As New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height + 10)
                sf.Alignment = StringAlignment.Center
                Dim r As RectangleF = New RectangleF(e.Bounds.X, e.Bounds.Y + 4, e.Bounds.Width, e.Bounds.Height)
                e.Graphics.DrawString(tabName, f, foreBrush, r, sf)
            Else
                f = New Font(e.Font, FontStyle.Regular)
    
                Dim tabName As String = tab_principal.TabPages(e.Index).Text.TrimStart
    
                Dim rect As New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height + 10)
                sf.Alignment = StringAlignment.Center
                Dim r As RectangleF = New RectangleF(e.Bounds.X, e.Bounds.Y + 4, e.Bounds.Width, e.Bounds.Height)
                e.Graphics.DrawString(tabName, f, foreBrush, r, sf)
            End If
    
    
    
            sf.Dispose()
    
            f.Dispose()
    
    Com isto deves ter o texto a negrito. Podes editar o que quiseres incluindo cor de fundo, tipo de letra, cor da letra, etc... Estuda as funções e.Graphics para veres as possibilidades.
     
  3. diog0silva

    diog0silva Power Member

    Obrigadão :D
     

Partilhar esta Página