Cómo: Crear texto de tamaño variable en un control ComboBox
Actualización: noviembre 2007
En este ejemplo se muestra el dibujo personalizado de texto en un control ComboBox. Cuando un elemento cumple un determinado criterio, se dibuja en una fuente mayor y se vuelve color rojo.
Ejemplo
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
Compilar el código
Para este ejemplo se necesita:
Un formulario Windows Forms.
Un control ComboBox denominado ListBox1 con tres elementos en la propiedad Items. En este ejemplo, los tres elementos se denominan "One", Two", and Three". La propiedad DrawMode de ComboBox1 se debe establecer en OwnerDrawVariable.
Nota: Esta técnica también se aplica al control ListBox: puede sustituir ListBox para el ComboBox.
Referencias a los espacios de nombres System.Windows.Forms y System.Drawing.
Vea también
Conceptos
Controles compatibles con dibujos propietarios integrados