windowsforms-devexpress-dot-xtraeditors-dot-listboxdrawitemeventargs-414ad3d1.md
Gets the state of the item being painted.
Namespace : DevExpress.XtraEditors
Assembly : DevExpress.XtraEditors.v25.2.dll
NuGet Package : DevExpress.Win.Navigation
public DrawItemState State { get; }
Public ReadOnly Property State As DrawItemState
| Type | Description |
|---|---|
| DrawItemState |
A DrawItemState enumeration member specifying the current state of an item being painted.
|
Access this property to obtain the painted item’s state. For example, this can be useful when it is necessary to custom paint items depending on their state. This property value may be a combination of the DrawItemState enumeration members. The members can be combined by use of bitwise operators.
You can also use the event parameter’s ListBoxDrawItemEventArgs.Index property to identify the index of the processed item.
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
See Also
ListBoxDrawItemEventArgs Class