SchedulerControl.CustomDrawTimeIndicator Event
Enables the Time Indicator to be painted manually.
Namespace: DevExpress.XtraScheduler
Assembly: DevExpress.XtraScheduler.v24.2.dll
NuGet Package: DevExpress.Win.Scheduler
#Declaration
public event CustomDrawObjectEventHandler CustomDrawTimeIndicator
#Event Data
The CustomDrawTimeIndicator event's data class is CustomDrawObjectEventArgs. The following properties provide information specific to this event:
Property | Description |
---|---|
Bounds | Returns the bounding rectangle of the drawing area. |
Cache | Gets an object which specifies the storage for the pens, fonts and brushes. Use it for custom painting in Scheduler Reports. |
Graphics | Gets an object used for painting. |
Handled | Gets or sets whether an event was handled. If it was handled, the default actions are not required. |
Object |
Gets information on the painted element. |
The event data class exposes the following methods:
Method | Description |
---|---|
Draw |
Renders the element using the default drawing mechanism. |
Draw |
Paints the required HTML template inside an element that raised this event. The context parameter allows you to assign an object that transfers mouse events to template elements. |
Draw |
Paints the required HTML template inside an element that raised this event. |
Get |
|
Get |
#Remarks
The CustomDrawTimeIndicator event occurs before a Time Indicator is painted. The event parameter’s CustomDrawObjectEventArgs.ObjectInfo property provides information sufficient to paint a time indicator in desired manner.
You can call the CustomDrawObjectEventArgs.DrawDefault method to perform default painting before applying custom draw.
Set the CustomDrawObjectEventArgs.Handled property to true to prohibit default painting.
#Example
This example handles the SchedulerControl.CustomDrawTimeIndicator
event to display the current time for the Time Indicator.
private void SchedulerControl1_CustomDrawTimeIndicator(object sender, CustomDrawObjectEventArgs e) {
TimeIndicatorViewInfo info = e.ObjectInfo as TimeIndicatorViewInfo;
SchedulerControl scheduler = sender as SchedulerControl;
e.DrawDefault();
foreach(var item in info.Items) {
HorizontalTimeIndicatorCircleItem timeIndicatorItem = item as HorizontalTimeIndicatorCircleItem;
if(timeIndicatorItem != null) {
Rectangle boundsText = Rectangle.Empty;
if(scheduler.ActiveView is DayView) {
boundsText = Rectangle.Inflate(new Rectangle(item.Bounds.X + 5, item.Bounds.Y-3, scheduler.ActiveView.ViewInfo.Bounds.Width - 5, 10), 0, 5);
boundsText.Offset(((int)e.Graphics.ClipBounds.Width / 2), -10);
}
e.Cache.DrawString(info.Interval.Start.ToString(), scheduler.Appearance.HeaderCaption.GetFont(), textBrush, boundsText,
scheduler.Appearance.HeaderCaption.GetStringFormat());
e.Cache.FillRectangle(textBrush, new Rectangle(item.Bounds.X + 5, item.Bounds.Y, scheduler.ActiveView.ViewInfo.Bounds.Width -5, 2));
}
}
e.Handled = true;
}