SchedulerHitInfo Class
Contains information about a specific point within a scheduler.
Namespace: DevExpress.XtraScheduler.Drawing
Assembly: DevExpress.XtraScheduler.v24.2.dll
Declaration
Related API Members
The following members return SchedulerHitInfo objects:
Remarks
SchedulerHitInfo objects can be created by calling the scheduler view’s SchedulerViewInfoBase.CalcHitInfo method. This method requires the test point passed as a parameter, or its coordinates.
The SchedulerHitInfo implements the following properties which provide an ability to obtain information about a specific point within a scheduler.
- The SchedulerHitInfo.HitTest property identifies the type of the topmost element located under the test point;
- The SchedulerHitInfo.ViewInfo property provides view information of the selected element.
Example
The following examples demonstrate how to handle the SchedulerControl.MouseMove event and calculate the hit information for the point which the mouse pointer is currently hovering over. The information on the element located under the mouse pointer is shown within the form caption.
The second parameter of the SchedulerViewInfoBase.CalcHitInfo method enables you to specify whether you need information on an appointment being clicked, or on a scheduler element located underneath.
When you drag an appointment over the scheduler, you can use the SchedulerViewInfoBase.CalcHitInfo method to determine the scheduler area below. If you drag appointment to the All-Day Area, you can cancel the action.
using DevExpress.XtraScheduler;
using DevExpress.XtraScheduler.Drawing;
using System;
using System.Drawing;
using System.Windows.Forms;
private void schedulerControl1_MouseMove(object sender, MouseEventArgs e)
{
SchedulerControl scheduler = sender as SchedulerControl;
if (scheduler == null) return;
Point pos = new Point(e.X, e.Y);
SchedulerViewInfoBase viewInfo = schedulerControl1.ActiveView.ViewInfo;
SchedulerHitInfo hitInfo = viewInfo.CalcHitInfo(pos, false);
if (hitInfo.HitTest == SchedulerHitTest.AppointmentContent)
{
Appointment apt = ((AppointmentViewInfo)hitInfo.ViewInfo).Appointment;
Text = apt.Subject;
}
else if (scheduler.ActiveView.Type == SchedulerViewType.Day && hitInfo.HitTest == SchedulerHitTest.Cell)
{
int diff = pos.Y - hitInfo.ViewInfo.Bounds.Y;
long ticksPerPixel = hitInfo.ViewInfo.Interval.Duration.Ticks /
hitInfo.ViewInfo.Bounds.Height;
long ticksCount = ticksPerPixel * diff;
DateTime actualTime = hitInfo.ViewInfo.Interval.Start.AddTicks(ticksCount);
Text = actualTime.ToString();
}
else if (hitInfo.HitTest == SchedulerHitTest.None)
{
Text = Application.ProductName;
}
else Text = string.Empty;
}
private void schedulerControl1_DragOver(object sender, DragEventArgs e)
{
SchedulerControl scheduler = sender as SchedulerControl;
if (scheduler == null) return;
Point p = scheduler.PointToClient(new Point(e.X, e.Y));
SchedulerHitInfo info = scheduler.DayView.ViewInfo.CalcHitInfo(p, true);
if (info.HitTest == SchedulerHitTest.AllDayArea)
e.Effect = DragDropEffects.None;
}