windowsforms-9456-controls-and-libraries-editors-and-simple-controls-examples-how-to-custom-paint-listboxcontrols-items.md
The following sample code handles the BaseListBoxControl.DrawItem event to custom paint odd and even list box items. The event handler also custom paints the currently selected item.
using DevExpress.XtraEditors;
private void listBoxControl1_DrawItem(object sender, DevExpress.XtraEditors.ListBoxDrawItemEventArgs e) {
Brush evenItemBackBrush = Brushes.WhiteSmoke;
Brush oddItemBackBrush = Brushes.LightBlue;
Brush selectedItemBackBrush = Brushes.SteelBlue;
string itemText = (sender as ListBoxControl).GetItemText(e.Index);
if ((e.State & DrawItemState.Selected) != 0) {
e.Cache.FillRectangle(selectedItemBackBrush, e.Bounds);
using (Font f = new Font(e.Appearance.Font.Name, e.Appearance.Font.Size, FontStyle.Bold)) {
e.Cache.DrawString(itemText, f, Brushes.White, e.Bounds, e.Appearance.GetStringFormat());
}
e.Handled = true;
return;
}
if (e.Index % 2 == 0) {
e.Cache.FillRectangle(evenItemBackBrush, e.Bounds);
}
else {
e.Cache.FillRectangle(oddItemBackBrush, e.Bounds);
}
e.Cache.DrawString(itemText, e.Appearance.Font, Brushes.Black, e.Bounds, e.Appearance.GetStringFormat());
e.Handled = true;
}
Private Sub ListBoxControl1_DrawItem(sender As Object, e As DevExpress.XtraEditors.ListBoxDrawItemEventArgs) Handles ListBoxControl1.DrawItem
Dim evenItemBackBrush As Brush = Brushes.WhiteSmoke
Dim oddItemBackBrush As Brush = Brushes.LightBlue
Dim selectedItemBackBrush As Brush = Brushes.SteelBlue
Dim itemText As String = (TryCast(sender, ListBoxControl)).GetItemText(e.Index)
If (e.State And DrawItemState.Selected) <> 0 Then
e.Cache.FillRectangle(selectedItemBackBrush, e.Bounds)
Using f As Font = New Font(e.Appearance.Font.Name, e.Appearance.Font.Size, FontStyle.Bold)
e.Cache.DrawString(itemText, f, Brushes.White, e.Bounds, e.Appearance.GetStringFormat())
End Using
e.Handled = True
Return
End If
If e.Index Mod 2 = 0 Then
e.Cache.FillRectangle(evenItemBackBrush, e.Bounds)
Else
e.Cache.FillRectangle(oddItemBackBrush, e.Bounds)
End If
e.Cache.DrawString(itemText, e.Appearance.Font, Brushes.Black, e.Bounds, e.Appearance.GetStringFormat())
e.Handled = True
End Sub