Back to Devexpress

ComboBoxEdit.DrawItem Event

windowsforms-devexpress-dot-xtraeditors-dot-comboboxedit-27a34fbe.md

latest4.1 KB
Original Source

ComboBoxEdit.DrawItem Event

Provides the ability to custom paint the items displayed within the combo box editor’s drop down.

Namespace : DevExpress.XtraEditors

Assembly : DevExpress.XtraEditors.v25.2.dll

NuGet Package : DevExpress.Win.Navigation

Declaration

csharp
[DXCategory("Events")]
public event ListBoxDrawItemEventHandler DrawItem
vb
<DXCategory("Events")>
Public Event DrawItem As ListBoxDrawItemEventHandler

Event Data

The DrawItem event's data class is ListBoxDrawItemEventArgs. The following properties provide information specific to this event:

PropertyDescription
AllowDrawSkinBackgroundGets or sets whether the item background is colored according to the currently applied skin.
AppearanceGets the appearance settings used to paint the item currently being processed.
BoundsGets the bounding rectangle of the item being painted.
IndexGets the index of the item being painted.
ItemGets the value of the processed item.
PaintArgs
StateGets the state of the item being painted.

Remarks

Handle the DrawItem event to override the default item painting. This event is raised each time an item is about to be painted. The event parameter’s properties allow you to identify the processed item, its boundaries, state, appearance settings, etc. You must set the Handled property to true to override the default painting.

Example

The following sample code handles the ComboBoxEdit.DrawItem event to custom paint the currently selected item. The result is shown in the image below:

csharp
using System.Drawing.Drawing2D;
using DevExpress.XtraEditors;

private void comboBoxEdit1_DrawItem(object sender, ListBoxDrawItemEventArgs e) {
  if(e.State != DrawItemState.Selected) return;
    using(var backBrush = new LinearGradientBrush(e.Bounds, Color.Blue, Color.LightBlue,
            LinearGradientMode.Horizontal))
        e.Cache.FillRectangle(backBrush, e.Bounds);
    e.Cache.DrawString(e.Item.ToString(), e.Appearance.Font, Brushes.White,
        e.Bounds);
    e.Handled = true;
}
vb
Imports System.Drawing.Drawing2D
' ...
Private Sub ComboBoxEdit1_DrawItem(ByVal sender As Object, _
 ByVal e As DevExpress.XtraEditors.ListBoxDrawItemEventArgs) _
 Handles ComboBoxEdit1.DrawItem
    If e.State <> DrawItemState.Selected Then
        Return
    End If
    Using backBrush = New LinearGradientBrush(e.Bounds, Color.Blue, Color.LightBlue, LinearGradientMode.Horizontal)
        e.Cache.FillRectangle(backBrush, e.Bounds)
    End Using
    e.Cache.DrawString(e.Item.ToString(), e.Appearance.Font, Brushes.White, e.Bounds)
    e.Handled = True
End Sub

See Also

DropDownItemHeight

MeasureItem

ComboBoxEdit Class

ComboBoxEdit Members

DevExpress.XtraEditors Namespace