Como: Criar texto de tamanho variável em um controle ComboBox
Este exemplo demonstra o desenho personalizado do texto em um ComboBox de controle. Quando um item atende a determinados critérios, ele é desenhado em uma fonte maior e ativado em vermelho.
Exemplo
Private Sub ComboBox1_MeasureItem(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MeasureItemEventArgs) Handles ComboBox1.MeasureItem
Dim bFont As New Font("Arial", 8, FontStyle.Bold)
Dim lFont As New Font("Arial", 12, FontStyle.Bold)
Dim siText As SizeF
If ComboBox1.Items().Item(e.Index) = "Two" Then
siText = e.Graphics.MeasureString(ComboBox1.Items().Item(e.Index), _
lFont)
Else
siText = e.Graphics.MeasureString(ComboBox1.Items().Item(e.Index), bFont)
End If
e.ItemHeight = siText.Height
e.ItemWidth = siText.Width
End Sub
Private Sub ComboBox1_DrawItem(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
Dim g As Graphics = e.Graphics
Dim bFont As New Font("Arial", 8, FontStyle.Bold)
Dim lFont As New Font("Arial", 12, FontStyle.Bold)
If ComboBox1.Items().Item(e.Index) = "Two" Then
g.DrawString(ComboBox1.Items.Item(e.Index), lfont, Brushes.Red, _
e.Bounds.X, e.Bounds.Y)
Else
g.DrawString(ComboBox1.Items.Item(e.Index), bFont, Brushes.Black, e.Bounds.X, e.Bounds.Y)
End If
End Sub
Compilando o código
Este exemplo requer:
Um formulário do Windows.
A ComboBox controle chamado ListBox1 com três itens na Items propriedade. Neste exemplo, os três itens são nomeados "One", Two", and Three". O DrawMode propriedade de ComboBox1 deve ser definido como OwnerDrawVariable.
Observação Essa técnica também é aplicável para o ListBox controle — você pode substituir um ListBox para o ComboBox.
Referências a System.Windows.Forms e System.Drawing namespaces.
Consulte também
Referência
Conceitos
Controles com suporte de desenho de proprietário interno