Back to Devexpress

SchedulerControl.AppointmentsDrag Event

windowsforms-devexpress-dot-xtrascheduler-dot-schedulercontrol-cbf8789b.md

latest4.4 KB
Original Source

SchedulerControl.AppointmentsDrag Event

The resulting event that fires after the last AppointmentDrag event. Allows you to schedule appointments added to the AdditionalAppointments collection, and perform other actions.

Namespace : DevExpress.XtraScheduler

Assembly : DevExpress.XtraScheduler.v25.2.dll

NuGet Package : DevExpress.Win.Scheduler

Declaration

csharp
public event EventHandler<AppointmentsDragEventArgs> AppointmentsDrag
vb
Public Event AppointmentsDrag As EventHandler(Of AppointmentsDragEventArgs)

Event Data

The AppointmentsDrag event's data class is DevExpress.XtraScheduler.AppointmentsDragEventArgs.

Remarks

In the sample below, if a user is about to schedule the “Start” appointment so that it finishes later in time than the related “Finish” appointment starts, the latter appointment is added to the AdditionalAppointments collection of the AppointmentDrag event.

csharp
void SchedulerControl1_AppointmentDrag(object sender, AppointmentDragEventArgs e) {
    if (e.SourceAppointment.Subject == "Start") {
        AppointmentBaseCollection visbileApts = schedulerControl1.ActiveView.GetAppointments();
        Appointment apt = visbileApts.Find(item => item.Subject == "Finish");
        if (apt == null)
            e.AdditionalAppointments.Clear();
        else {
            if (e.SourceAppointment != apt) {
                if (e.EditedAppointment.End > apt.Start)
                    e.AdditionalAppointments.Add(apt);
                else e.AdditionalAppointments.Clear(); 
            }
        }
    }
}
vb
Private Sub SchedulerControl1_AppointmentDrag(ByVal sender As Object, ByVal e As AppointmentDragEventArgs)
    If e.SourceAppointment.Subject = "Start" Then
        Dim visbileApts As AppointmentBaseCollection = schedulerControl1.ActiveView.GetAppointments()
        Dim apt As Appointment = visbileApts.Find(Function(item) item.Subject = "Finish")
        If apt Is Nothing Then
            e.AdditionalAppointments.Clear()
        Else
            If e.SourceAppointment IsNot apt Then
                If e.EditedAppointment.End > apt.Start Then
                    e.AdditionalAppointments.Add(apt)
                Else
                    e.AdditionalAppointments.Clear()
                End If
            End If
        End If
    End If
End Sub

New positions for AdditionalAppointments are set in the AppointmentsDrag event handler.

csharp
private void SchedulerControl1_AppointmentsDrag(object sender, DevExpress.XtraScheduler.AppointmentsDragEventArgs e) {
    if (e.AdditionalAppointmentInfos.Count <= 0)
        return;
    AppointmentDragInfo aptInfo = e.AdditionalAppointmentInfos[0];
    if (e.PrimaryAppointmentInfos[0].EditedAppointment.End > aptInfo.SourceAppointment.Start)
        aptInfo.EditedAppointment.Start = e.PrimaryAppointmentInfos[0].EditedAppointment.End;
}
vb
Private Sub SchedulerControl1_AppointmentsDrag(ByVal sender As Object, ByVal e As DevExpress.XtraScheduler.AppointmentsDragEventArgs)
    If e.AdditionalAppointmentInfos.Count <= 0 Then
        Return
    End If
    Dim aptInfo As AppointmentDragInfo = e.AdditionalAppointmentInfos(0)
    If e.PrimaryAppointmentInfos(0).EditedAppointment.End > aptInfo.SourceAppointment.Start Then
        aptInfo.EditedAppointment.Start = e.PrimaryAppointmentInfos(0).EditedAppointment.End
    End If
End Sub

See Also

SchedulerControl Class

SchedulerControl Members

DevExpress.XtraScheduler Namespace