Procedura: creare testo di dimensioni variabili in un controllo ComboBox
Aggiornamento: novembre 2007
In questo esempio viene illustrato il disegno personalizzato di testo in un controllo ComboBox. Quando una voce soddisfa un determinato criterio, viene disegnata con tipi di carattere più grandi e visualizzata in rosso.
Esempio
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
Compilazione del codice
L'esempio presenta i seguenti requisiti:
Un Windows Form.
Un controllo ComboBox denominato ListBox1 con tre voci nella proprietà Items. In questo esempio le tre voci vengono denominate "One", Two", and Three". La proprietà DrawMode di ComboBox1 deve essere impostata su OwnerDrawVariable.
Nota: Questa tecnica è inoltre applicabile al controllo ListBox. È possibile sostituire una classe ListBox con ComboBox.
Riferimenti agli spazi dei nomi System.Windows.Forms e System.Drawing.
Vedere anche
Concetti
Controlli con supporto incorporato per la creazione da parte del proprietario