Back to Devexpress

ListBoxDrawItemEventArgs.State Property

windowsforms-devexpress-dot-xtraeditors-dot-listboxdrawitemeventargs-414ad3d1.md

latest4.6 KB
Original Source

ListBoxDrawItemEventArgs.State Property

Gets the state of the item being painted.

Namespace : DevExpress.XtraEditors

Assembly : DevExpress.XtraEditors.v25.2.dll

NuGet Package : DevExpress.Win.Navigation

Declaration

csharp
public DrawItemState State { get; }
vb
Public ReadOnly Property State As DrawItemState

Property Value

TypeDescription
DrawItemState

A DrawItemState enumeration member specifying the current state of an item being painted.

|

Remarks

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.

Example

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.

csharp
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;
}
vb
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

Index

Appearance

DrawItem

MeasureItem

ListBoxDrawItemEventArgs Class

ListBoxDrawItemEventArgs Members

DevExpress.XtraEditors Namespace