Skip to main content

SchedulerOptionsCustomization.AllowAppointmentCopy Property

Gets or sets whether a user is allowed to copy appointments.

Namespace: DevExpress.XtraScheduler

Assembly: DevExpress.XtraScheduler.v23.1.Core.Desktop.dll

NuGet Package: DevExpress.Scheduler.CoreDesktop


public UsedAppointmentType AllowAppointmentCopy { get; set; }

Property Value

Type Default Description
UsedAppointmentType All

A UsedAppointmentType enumeration value that specifies the type of appointment to which the action can be applied.

Available values:

Name Description

The action can’t be applied to any appointments.


The action can be applied to recurring appointments only.


The action can be applied to non-recurring appointments only.


The action can be applied to all the appointments.


The action is applied according to the custom method specified by the corresponding AllowAppointment~ or CustomAllowAppointment~ event of the SchedulerControl.

Property Paths

You can access this nested property as listed below:

Library Object Type Path to AllowAppointmentCopy
WinForms Controls SchedulerControl
.OptionsCustomization .AllowAppointmentCopy
ASP.NET Bootstrap Controls BootstrapScheduler
.OptionsEditing .AllowAppointmentCopy
eXpressApp Framework ASPxSchedulerListEditor
.OptionsCustomization .AllowAppointmentCopy
ASP.NET Web Forms Controls ASPxScheduler
.OptionsCustomization .AllowAppointmentCopy
ASP.NET MVC Extensions SchedulerSettings
.OptionsCustomization .AllowAppointmentCopy


By default, end-users are allowed to copy appointments. Use the AllowAppointmentCopy property to control the availability of such functionality to end-users with regards to an appointment’s type. For instance, if the AllowAppointmentCopy property allows appointments of all types to be copied (the property is set to UsedAppointmentType.All), an end-user can copy the desired appointment by dragging it to a new time slot while holding down the Ctrl keyboard key (note that the SchedulerOptionsCustomization.AllowAppointmentDrag option should be enabled to allow dragging).


If the AllowAppointmentCopy property is set to UsedAppointmentType.Custom, then whether an end-user is allowed to copy appointments or not is decided in the SchedulerControl.AllowAppointmentCopy event handler.


This example demonstrates how to implement custom rules for editing and deleting appointments. The code below allows an appointment to be edited only by its owner (the end-user who created it). To do this it’s necessary to set the SchedulerOptionsCustomization.AllowAppointmentEdit and SchedulerOptionsCustomization.AllowAppointmentDelete properties to UsedAppointmentType.Custom, and handle the SchedulerControl.AllowAppointmentEdit and SchedulerControl.AllowAppointmentDelete events to implement custom logic for editing appointments.

using DevExpress.XtraScheduler;
// ...

private void schedulerControl1_AllowAppointmentDelete(object sender, 
    AppointmentOperationEventArgs e) {
   // Allow only the user who created this appontment to delete it.
   e.Allow = CanUserModifyThisAppointment(e.Appointment);
private void schedulerControl1_AllowAppointmentEdit(object sender, 
    AppointmentOperationEventArgs e) {
   // Allow only the user who created this appontment to modify it.
   e.Allow = CanUserModifyThisAppointment(e.Appointment);
// Determine if the current user is the same 
// as the one who created the specified appointment 
bool CanUserModifyThisAppointment(Appointment apt) {
   object obj = apt.CustomFields["Owner"];
   if (obj == null)
      return true;
   string appointmentOwner = obj.ToString();
   if (appointmentOwner == String.Empty)
      return true;
   return (String.Compare(appointmentOwner, tbUserName.Text, true) == 0);
See Also