Skip to main content
All docs
V25.1
  • DevExpress v25.1 Update — Your Feedback Matters

    Our What's New in v25.1 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

    Take the survey Not interested

    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