windowsforms-devexpress-dot-xtrascheduler-dot-schedulercontrol-cbf8789b.md
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
public event EventHandler<AppointmentsDragEventArgs> AppointmentsDrag
Public Event AppointmentsDrag As EventHandler(Of AppointmentsDragEventArgs)
The AppointmentsDrag event's data class is DevExpress.XtraScheduler.AppointmentsDragEventArgs.
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();
}
}
}
}
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.
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;
}
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