Skip to main content

RepositoryItemDateEdit.CustomDrawDayNumberCell Event

OBSOLETE

Use the DrawItem event instead.

Occurs when drawing day cells in the dropdown calendar.

Namespace: DevExpress.XtraEditors.Repository

Assembly: DevExpress.XtraEditors.v24.1.dll

NuGet Package: DevExpress.Win.Navigation

Declaration

[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("Use the DrawItem event instead.")]
public event CustomDrawDayNumberCellEventHandler CustomDrawDayNumberCell

Event Data

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

Property Description
BackgroundElementInfo Gets or sets the skin element that is used to paint the background of the currently processed cell.
Bounds Gets the painted element’s bounding rectangle.
ContentBounds Gets the bounds of the cell’s content (text).
Date Gets the painted cell’s value.
DateOnly
DateTime
Disabled Gets whether the painted cell is disabled.
Highlighted Gets whether the currently processed cell is under the mouse cursor.
Holiday Gets whether the painted cell corresponds to Saturday or Sunday.
Inactive Gets whether the painted cell belongs to the previous or next month.
IsPressed Gets whether the cell is currently pressed.
IsSpecial Gets whether the cell corresponds to a “special” date.
Selected Gets a value indicating whether the processed day number cell is selected.
State Gets the current cell’s state.
Style Gets the painted date cell’s appearance settings.
Today Gets whether the painted cell corresponds to Today’s date.
View Gets or sets the current View of data in the dropdown window.
ViewInfo Contains information used for painting the current cell.

Remarks

This event is obsolete. Handle the RepositoryItemDateEdit.DrawItem event instead.

Example

The following example handles the DateEdit.DrawItem event to custom paint non-working days within the dropdown calendar. These days are painted red (non-working days which don’t belong to the currently displayed month are painted light pink).

The following image shows the result.

DateEdit_CustomDraw

using DevExpress.XtraEditors.Calendar;

private bool IsHoliday(DateTime dt) {
   //the specified date is a Saturday or Holiday
   if(dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday) return true;
   //New Year's Day
   if(dt.Day == 1 && dt.Month == 1) return true;
   //Inauguration Day
   if(dt.Year >= 1789 && (dt.Year - 1789) % 4 == 0) {
      if(dt.Day == 20 && dt.Month == 1) return true;
   }
   //Independence Day
   if(dt.Day == 4 && dt.Month == 7) return true;
   //Veterans Day
   if(dt.Day == 11 && dt.Month == 11) return true;
   //Christmas
   if(dt.Day == 25 && dt.Month == 12) return true;
   return false;
}
private void dateEdit1_DrawItem(object sender, CustomDrawDayNumberCellEventArgs e) {
    if (e.View != DevExpress.XtraEditors.Controls.DateEditCalendarViewType.MonthInfo) return;
    //return if a given date is not a holiday
    //in this case the default drawing will be performed (e.Handled is false)
    if (!IsHoliday(e.Date)) return;
    //highlight the selected and hot-tracked dates
    bool isHotTracked = e.State == DevExpress.Utils.Drawing.ObjectState.Hot;
    if (e.Selected || isHotTracked) {
        e.Cache.FillRectangle(e.Style.GetBackBrush(e.Cache), e.Bounds);
    }
    //the brush for painting days
    Brush brush = (e.Inactive ? Brushes.LightPink : Brushes.Red);
    //specify formatting attributes for drawing text
    StringFormat strFormat = new StringFormat();
    strFormat.Alignment = StringAlignment.Center;
    strFormat.LineAlignment = StringAlignment.Center;
    //draw the day number
    e.Cache.DrawString(e.Date.Day.ToString(), e.Style.Font, brush, e.Bounds, strFormat);
    //no default drawing is required
    e.Handled = true;
}
See Also