设置特殊日历例外
示例一
假定2024年没有双休,改为每五天休息一天,参考代码:
Dim 
gv 
As 
GanttView = e.Form.Controls("GanttView1").GanttView
gv.DefaultDaysOff = Gantt.WeekDays.None 
'取消原来的周末休息
Dim 
exp 
As
New 
Gantt.CalendarException() 
'定义一个日历例外
exp.Name = 
"五天一休"
exp.StartDate = 
New
Date(2024, 
1, 1) 
'例外开始日
exp.FinishDate = 
New
Date(2024, 
12, 31) 
'例外结束日
'注意必须设置LimitedBy属性设置为FinishDate,FinishDate属性才会生效:
exp.LimitedBy = C1.Win.C1GanttView.ExceptionLimitedBy.FinishDate
exp.RecurrencePattern.Interval = 5 
'每五天触发一次例外,也就是每五天休一天
gv.CalendarExceptions.Add(exp)
执行后的甘特图看起来是这样的:

示例二
要求2024年每个月第一周的星期三停工,用于设备检修维护,参考代码:
Dim 
gv 
As 
GanttView = e.Form.Controls("GanttView1").GanttView
Dim 
exp 
As
New 
Gantt.CalendarException() 
'定义一个日历例外
exp.Name = 
"设备月检修"
exp.StartDate = 
New
Date(2024, 
1, 1) 
'例外开始日
exp.FinishDate = 
New
Date(2024, 
12, 31) 
'例外结束日
'注意必须设置LimitedBy属性设置为FinishDate,FinishDate属性才会生效:
exp.LimitedBy = C1.Win.C1GanttView.ExceptionLimitedBy.FinishDate
exp.RecurrencePattern.WeekOfMonth = Gantt.WeekOfMonth.First 
'例外发生在每月第一周
exp.RecurrencePattern.WeekDays = Gantt.WeekDays.Wednesday 
'例外发生在第一周的星期三
gv.CalendarExceptions.Add(exp)
示例三
要求每年5月17日停工举办公司周年庆典:
Dim 
gv 
As 
GanttView = e.Form.Controls("GanttView1").GanttView
Dim 
exp 
As
New 
Gantt.CalendarException()
exp.Name = 
"周年庆典"
exp.StartDate = 
New
Date(2000, 
1, 1) 
exp.FinishDate = 
New
Date(2100, 
12, 31) 
exp.LimitedBy = C1.Win.C1GanttView.ExceptionLimitedBy.FinishDate
exp.RecurrencePattern.MonthOfYear = 5 
'例外发生在每年5月,如果每月都要发生,删除这样代码即可
exp.RecurrencePattern.DayOfMonth = 17 
'例外发生在这个月的17日
gv.CalendarExceptions.Add(exp)