Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This example demonstrates custom drawing of text in a ComboBox control. When an item meets a certain criteria, it is drawn in a larger font and turned red.
Example
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
Compiling the Code
This example requires:
A Windows form.
A ComboBox control named
ListBox1
with three items in the Items property. In this example, the three items are named"One", Two", and Three"
. The DrawMode property ofComboBox1
must be set to OwnerDrawVariable.Note
This technique is also applicable to the ListBox control — you can substitute a ListBox for the ComboBox.
References to the System.Windows.Forms and System.Drawing namespaces.
See Also
Reference
DrawItem
DrawItemEventArgs
MeasureItem
Concepts
Controls with Built-In Owner-Drawing Support
Other Resources
ListBox Control (Windows Forms)
ComboBox Control (Windows Forms)