windowsforms-devexpress-dot-xtragantt-dot-exceptions-1e484853.md
Represents a rule that specifies an exception that reoccurs every week on a particular day of the week.
Namespace : DevExpress.XtraGantt.Exceptions
Assembly : DevExpress.XtraGantt.v25.2.dll
NuGet Package : DevExpress.Win.Gantt
public class WeeklyExceptionRule :
WorkTimesExceptionRule
Public Class WeeklyExceptionRule
Inherits WorkTimesExceptionRule
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());
Imports DevExpress.XtraGantt
Imports DevExpress.XtraGantt.Base.Scheduling
Imports DevExpress.XtraGantt.Exceptions
Imports DevExpress.XtraGantt.Scheduling
Private Function CreateCustomRules() As ExceptionRule()
Dim dailyException As New DailyExceptionRule() With {
.StartDate = New Date(2019, 8, 19),
.Occurrences = 7
}
dailyException.WorkTimes.Add(New WorkTime(9, 12))
Dim daysException As New DaysExceptionRule() With {
.StartDate = New Date(2023, 9, 27, 0, 0, 0, 0),
.Occurrences = 1
}
' The rule applies to the first day of each month (January, 1; February, 1; etc.)
Dim FirstDayInMonth As New MonthlyExceptionRule() With {.DayOfMonth = 1}
FirstDayInMonth.Add(New WorkTime(10, 12))
' The rule applies to the second Friday of each month.
Dim SecondFridayInMonth As New MonthlyDayOfWeekExceptionRule() With {
.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.
Dim December31 As New YearlyExceptionRule() With {
.DayOfMonth = 31,
.Month = Month.December,
.StartDate = New Date(2019, 12, 31),
.Interval = 2,
.Occurrences = 5
}
December31.Add(New WorkTime(9, 11))
'The rule applies to the 256th day each year.
Dim Day256 As New YearlyDayOfYearExceptionRule() With {.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 }
End Function
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
};
}
Imports DevExpress.XtraGantt.Base.Scheduling
Imports DevExpress.XtraGantt.Exceptions
ganttControl1.Exceptions.AddRange(CreateExceptionRules())
Private Function CreateExceptionRules() As ExceptionRule()
Dim NewYearDay As New YearlyExceptionRule() With {.DayOfMonth = 1, .Month = Scheduling.Month.January}
Dim MartinLutherDay As New YearlyDayOfWeekExceptionRule() With {.DayOfWeek = System.DayOfWeek.Monday, .Month = Scheduling.Month.January, .WeekOfMonth = Scheduling.WeekOfMonth.Third}
Dim PresidentDay As New YearlyDayOfWeekExceptionRule() With {.DayOfWeek = System.DayOfWeek.Monday, .Month = Scheduling.Month.February, .WeekOfMonth = Scheduling.WeekOfMonth.Third}
Dim MemorialDay As New YearlyDayOfWeekExceptionRule() With {.DayOfWeek = System.DayOfWeek.Monday, .Month = Scheduling.Month.May, .WeekOfMonth = Scheduling.WeekOfMonth.Last}
Dim IndependenceDay As New YearlyExceptionRule() With {.DayOfMonth = 4, .Month = Scheduling.Month.July}
Dim LaborDay As New YearlyDayOfWeekExceptionRule() With {.DayOfWeek = System.DayOfWeek.Monday, .Month = Scheduling.Month.September, .WeekOfMonth = Scheduling.WeekOfMonth.First}
Dim ColumbusDay As New YearlyDayOfWeekExceptionRule() With {.DayOfWeek = System.DayOfWeek.Monday, .Month = Scheduling.Month.October, .WeekOfMonth = Scheduling.WeekOfMonth.Second}
Dim VeteransDay As New YearlyExceptionRule() With {.DayOfMonth = 11, .Month = Scheduling.Month.November}
Dim ThanksgivingDay As New YearlyDayOfWeekExceptionRule() With {.DayOfWeek = System.DayOfWeek.Thursday, .Month = Scheduling.Month.November, .WeekOfMonth = Scheduling.WeekOfMonth.Forth}
Dim ChristmasDay As New YearlyExceptionRule() With {.DayOfMonth = 25, .Month = Scheduling.Month.December}
Return New ExceptionRule() { NewYearDay, MartinLutherDay, PresidentDay, MemorialDay, IndependenceDay, LaborDay, ColumbusDay, VeteransDay, ThanksgivingDay, ChristmasDay }
End Function
Note
Run the XtraGantt demo to see the complete example. Click Open Solution in the ribbon for source codes.
Object BaseRule ExceptionRule WorkTimesExceptionRule WeeklyExceptionRule
See Also