Skip to main content
All docs
V25.1
  • 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.1.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