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
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.

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