Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

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.v24.2.dll

NuGet Package: DevExpress.Win.Navigation

#Declaration

[DXCategory("Events")]
public event ListBoxDrawItemEventHandler DrawItem

#Event Data

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

Property Description
AllowDrawSkinBackground Gets or sets whether the item background is colored according to the currently applied skin.
Appearance Gets the appearance settings used to paint the item currently being processed.
Bounds Gets the bounding rectangle of the item being painted.
Index Gets the index of the item being painted.
Item Gets the value of the processed item.
PaintArgs
State Gets 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:

ComboBoxEdit_DrawItem

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;
}
See Also