GanttControl.Exceptions Property
Provides access to rules that specify exceptions to the regular workweek schedule.
Namespace: DevExpress.XtraGantt
Assembly: DevExpress.XtraGantt.v24.2.dll
Declaration
[XtraSerializableProperty(XtraSerializationVisibility.Collection, true, false, true, 1002, XtraSerializationFlags.DefaultValue)]
[DXCategory("Behavior")]
public ExceptionRuleCollection Exceptions { get; }
Property Value
Type | Description |
---|---|
ExceptionRuleCollection | An object that contains exceptions to the regular workweek schedule. |
Remarks
The WorkWeek property provides access to the workweek schedule. The default workweek is from Monday to Friday. Work hours are 8:00 to 17:00 with a break between 12:00 and 13:00.
The Exceptions
property provides access to rules that specify exceptions to the regular workweek schedule. You can specify the following exceptions:
- DailyExceptionRule — Represents a rule that specifies an exception that reoccurs every day.
- WeeklyExceptionRule — Represents a rule that specifies an exception that reoccurs every week on a particular day of the week.
- MonthlyExceptionRule — Represents a rule that specifies an exception that reoccurs every month on a particular day of the month.
- MonthlyDayOfWeekExceptionRule — Represents a rule that specifies an exception that reoccurs every month in a particular week of the month and day of the week.
- YearlyExceptionRule — Represents a rule that specifies an exception that reoccurs every year in a particular month and day of the month.
- YearlyDayOfWeekExceptionRule — Represents a rule that specifies an exception that reoccurs every year in a particular month, week of the month, and day of the week.
- YearlyDayOfYearExceptionRule — Represents a rule that specifies an exception that reoccurs every year on a particular day of the year.
To customize exceptions in the Visual Studio Designer, click Edit Exceptions in the control’s smart tag menu (or click Run Designer and navigate to the Exceptions section).
Examples
The code below shows how to specify custom exception rules.
using DevExpress.XtraGantt;
using DevExpress.XtraGantt.Base.Scheduling;
using DevExpress.XtraGantt.Exceptions;
using DevExpress.XtraGantt.Scheduling;
private ExceptionRule[] CreateCustomRules() {
DailyExceptionRule dailyException = new DailyExceptionRule() {
StartDate = new DateTime(2019, 8, 19),
Occurrences = 7
};
dailyException.WorkTimes.Add(new WorkTime(9, 12));
DaysExceptionRule daysException = new DaysExceptionRule() {
StartDate = new System.DateTime(2023, 9, 27, 0, 0, 0, 0),
Occurrences = 1
};
// The rule applies to the first day of each month (January, 1; February, 1; etc.)
MonthlyExceptionRule FirstDayInMonth = new MonthlyExceptionRule() {
DayOfMonth = 1
};
FirstDayInMonth.Add(new WorkTime(10, 12));
// The rule applies to the second Friday of each month.
MonthlyDayOfWeekExceptionRule SecondFridayInMonth = new MonthlyDayOfWeekExceptionRule() {
DayOfWeek = DayOfWeek.Friday,
WeekOfMonth = WeekOfMonth.Second
};
SecondFridayInMonth.Add(new WorkTime(9, 12));
// The rule applies to 31st December 5 times
// each two years starting from 12/31/2019.
YearlyExceptionRule December31 = new YearlyExceptionRule() {
DayOfMonth = 31,
Month = Month.December,
StartDate = new DateTime(2019, 12, 31),
Interval = 2,
Occurrences = 5
};
December31.Add(new WorkTime(9, 11));
//The rule applies to the 256th day each year.
YearlyDayOfYearExceptionRule Day256 = new YearlyDayOfYearExceptionRule() {
DayOfYear = 256,
};
// Specify work hours for the 256th day.
Day256.WorkTimes.Add(new WorkTime(9, 12));
return new ExceptionRule[] { SecondFridayInMonth, FirstDayInMonth, dailyException, daysException, Day256, December31 };
}
ganttControl1.Exceptions.AddRange(CreateCustomRules());
The code below shows how to specify holidays.
using DevExpress.XtraGantt.Base.Scheduling;
using DevExpress.XtraGantt.Exceptions;
ganttControl1.Exceptions.AddRange(CreateExceptionRules());
ExceptionRule[] CreateExceptionRules() {
YearlyExceptionRule NewYearDay = new YearlyExceptionRule() {
DayOfMonth = 1,
Month = Scheduling.Month.January
};
YearlyDayOfWeekExceptionRule MartinLutherDay = new YearlyDayOfWeekExceptionRule() {
DayOfWeek = System.DayOfWeek.Monday,
Month = Scheduling.Month.January,
WeekOfMonth = Scheduling.WeekOfMonth.Third
};
YearlyDayOfWeekExceptionRule PresidentDay = new YearlyDayOfWeekExceptionRule() {
DayOfWeek = System.DayOfWeek.Monday,
Month = Scheduling.Month.February,
WeekOfMonth = Scheduling.WeekOfMonth.Third
};
YearlyDayOfWeekExceptionRule MemorialDay = new YearlyDayOfWeekExceptionRule() {
DayOfWeek = System.DayOfWeek.Monday,
Month = Scheduling.Month.May,
WeekOfMonth = Scheduling.WeekOfMonth.Last
};
YearlyExceptionRule IndependenceDay = new YearlyExceptionRule() {
DayOfMonth = 4,
Month = Scheduling.Month.July
};
YearlyDayOfWeekExceptionRule LaborDay = new YearlyDayOfWeekExceptionRule() {
DayOfWeek = System.DayOfWeek.Monday,
Month = Scheduling.Month.September,
WeekOfMonth = Scheduling.WeekOfMonth.First
};
YearlyDayOfWeekExceptionRule ColumbusDay = new YearlyDayOfWeekExceptionRule() {
DayOfWeek = System.DayOfWeek.Monday,
Month = Scheduling.Month.October,
WeekOfMonth = Scheduling.WeekOfMonth.Second
};
YearlyExceptionRule VeteransDay = new YearlyExceptionRule() {
DayOfMonth = 11,
Month = Scheduling.Month.November
};
YearlyDayOfWeekExceptionRule ThanksgivingDay = new YearlyDayOfWeekExceptionRule() {
DayOfWeek = System.DayOfWeek.Thursday,
Month = Scheduling.Month.November,
WeekOfMonth = Scheduling.WeekOfMonth.Forth
};
YearlyExceptionRule ChristmasDay = new YearlyExceptionRule() {
DayOfMonth = 25,
Month = Scheduling.Month.December
};
return new ExceptionRule[] {
NewYearDay,
MartinLutherDay,
PresidentDay,
MemorialDay,
IndependenceDay,
LaborDay,
ColumbusDay,
VeteransDay,
ThanksgivingDay,
ChristmasDay
};
}
Note
Run the XtraGantt demo to see the complete example. Click Open Solution in the ribbon for source codes.