Back to Devexpress

SchedulerHitInfo Class

windowsforms-devexpress-dot-xtrascheduler-dot-drawing-0cf776bc.md

latest9.1 KB
Original Source

SchedulerHitInfo Class

Contains information about a specific point within a scheduler.

Namespace : DevExpress.XtraScheduler.Drawing

Assembly : DevExpress.XtraScheduler.v25.2.dll

NuGet Package : DevExpress.Win.Scheduler

Declaration

csharp
public class SchedulerHitInfo :
    ISchedulerHitInfo
vb
Public Class SchedulerHitInfo
    Implements ISchedulerHitInfo

The following members return SchedulerHitInfo objects:

Show 11 links

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.

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.

View Example

csharp
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;
        }
vb
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

Inheritance

Object SchedulerHitInfo

See Also

SchedulerHitInfo Members

DevExpress.XtraScheduler.Drawing Namespace