Skip to main content
A newer version of this page is available. .

GanttControl.Exceptions Property

Provides access to rules that specify exceptions to the regular workweek schedule.

Namespace: DevExpress.XtraGantt

Assembly: DevExpress.XtraGantt.v19.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() {

    // The rule applies seven times starting from 8/19/2019 each day.
    DaysExceptionRule OneWeek = new DaysExceptionRule() {
        StartDate = new DateTime(2019, 8, 19),
        Occurrences = 7
    };

    // The rule applies to the first day of each month (January, 1; February, 1; etc.)
    MonthlyExceptionRule FirstDayInMonth = new MonthlyExceptionRule() {
        DayOfMonth = 1
    };

    // The rule applies to the second Friday of each month.
    MonthlyDayOfWeekExceptionRule SecondFridayInMonth = new MonthlyDayOfWeekExceptionRule() {
        DayOfWeek = DayOfWeek.Friday,
        WeekOfMonth = WeekOfMonth.Second
    };

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

    //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, OneWeek, Day256, December31 };
}

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 Gantt demo to see the complete example.

See Also