corelibraries-devexpress-dot-xtrascheduler-dot-drawing-82975cf7.md
Lists the values that identify a scheduler’s elements.
Namespace : DevExpress.XtraScheduler.Drawing
Assembly : DevExpress.XtraScheduler.v25.2.Core.Desktop.dll
NuGet Package : DevExpress.Scheduler.CoreDesktop
public enum SchedulerHitTest : long
Public Enum SchedulerHitTest As Long
| Name | Description |
|---|---|
None |
The test point does not belong to any visual element or is outside the scheduler.
|
| Cell |
The test point belongs to a time cell.
|
| ResourceHeader |
The test point belongs to a resource header.
|
| DayHeader |
The test point belongs to a day header.
|
| AllDayArea |
The test point belongs to the all-day area.
|
| AppointmentResizingLeftEdge |
The test point belongs to the left resizable edge of an appointment.
|
| AppointmentResizingRightEdge |
The test point belongs to the right resizable edge of an appointment.
|
| AppointmentResizingTopEdge |
The test point belongs to the top resizable edge of an appointment.
|
| AppointmentResizingBottomEdge |
The test point belongs to the bottom resizable edge of an appointment.
|
| AppointmentMoveEdge |
The test point belongs to the movable edge of an appointment.
|
| AppointmentContent |
The test point belongs to contents of an appointment.
|
| MoreButton |
The test point belongs to a MoreButton.
|
| DayOfWeekHeader |
The test point belongs to a day of week header.
|
| GroupSeparator |
The test point belongs to the group separator, which separates one group from another.
|
| UpperLeftCorner |
The test point belongs to the top-left corner in the Day View.
|
| DayViewColumn |
The test point belongs to a column in a Day View.
|
| SingleWeek |
The test point belongs to a single week.
|
| Timeline |
The test point belongs to the timeline bar.
|
| SelectionBar |
The test point belongs to the selection bar in the Timeline View.
|
| SelectionBarCell |
The test point belongs to a single cell of the selection bar in the Timeline View.
|
| TimeScaleHeader |
The test point belongs to the time scale header in the Timeline View.
|
| Ruler |
The test point belongs to a time ruler.
|
| NavigationButton |
The test point belongs to the navigation button.
|
| ScrollMoreButton |
The test point belongs to a Scroll MoreButton.
|
| AppointmentDependency |
The test point belongs to the Dependency
|
| Undefined |
An object under the test point cannot be determined.
|
| TimeIndicator |
The test point belongs to the Time Indicator element.
|
| ContextButtons |
Reserved for future use.
|
| GridElement |
A test point belongs to the element of the Agenda view grid.
|
| HeaderTab | |
| TabArea | |
| HeaderButton | |
| MonthHeader | |
| Hyperlink | |
The following properties accept/return SchedulerHitTest values:
The SchedulerHitTest enumeration’s values are returned by the SchedulerHitInfo.HitTest property of a SchedulerHitInfo object. Note, that SchedulerHitInfo objects can be created by calling the scheduler’s SchedulerViewInfoBase.CalcHitInfo method.
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.
Note
A complete sample project is available at https://github.com/DevExpress-Examples/winforms-scheduler-hit-testing
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;
}
Imports DevExpress.XtraScheduler
Imports DevExpress.XtraScheduler.Drawing
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Private Sub schedulerControl1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles schedulerControl1.MouseMove
Dim scheduler As SchedulerControl = TryCast(sender, SchedulerControl)
If scheduler Is Nothing Then
Return
End If
Dim pos As New Point(e.X, e.Y)
Dim viewInfo As SchedulerViewInfoBase = schedulerControl1.ActiveView.ViewInfo
Dim hitInfo As SchedulerHitInfo = viewInfo.CalcHitInfo(pos, False)
If hitInfo.HitTest = SchedulerHitTest.AppointmentContent Then
Dim apt As Appointment = CType(hitInfo.ViewInfo, AppointmentViewInfo).Appointment
Text = apt.Subject
ElseIf scheduler.ActiveView.Type = SchedulerViewType.Day AndAlso hitInfo.HitTest = SchedulerHitTest.Cell Then
Dim diff As Integer = pos.Y - hitInfo.ViewInfo.Bounds.Y
Dim ticksPerPixel = hitInfo.ViewInfo.Interval.Duration.Ticks / hitInfo.ViewInfo.Bounds.Height
Dim ticksCount = CType(ticksPerPixel * diff, Long)
Dim actualTime As Date = hitInfo.ViewInfo.Interval.Start.AddTicks(ticksCount)
Text = actualTime.ToString()
ElseIf hitInfo.HitTest = SchedulerHitTest.None Then
Text = Application.ProductName
Else
Text = String.Empty
End If
End Sub
Private Sub schedulerControl1_DragOver(ByVal sender As Object, ByVal e As DragEventArgs) Handles schedulerControl1.DragOver
Dim scheduler As SchedulerControl = TryCast(sender, SchedulerControl)
If scheduler Is Nothing Then
Return
End If
Dim p As Point = scheduler.PointToClient(New Point(e.X, e.Y))
Dim info As SchedulerHitInfo = scheduler.DayView.ViewInfo.CalcHitInfo(p, True)
If info.HitTest = SchedulerHitTest.AllDayArea Then
e.Effect = DragDropEffects.None
End If
End Sub
See Also