Skip to main content
All docs
V23.2

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.v23.2.dll

NuGet Package: DevExpress.Win.Scheduler

Declaration

public event EventHandler<AppointmentsDragEventArgs> AppointmentsDrag

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.

DevExpress Scheduler automatically reschedules an appointment when a user drags its related appointment

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(); 
            }
        }
    }
}

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

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;
}
See Also