通过代码增加前驱任务
如果想通过代码增加前驱任务,可以参考以下代码:
Dim
gv
As
GanttView = e.Form.Controls("GanttView1").GanttView
gv.Tasks.Clear()
gv.StartDate =
New
Date(2024,
9, 1)
Dim
tk1
As
New
Gantt.Task
tk1.Name =
"Task1"
tk1.Mode = Gantt.TaskMode.Automatic
tk1.ConstraintDate =
New
Date(2024,
9, 2)
tk1.ConstraintType = Gantt.ConstraintType.StartNoEarlierThan
tk1.Duration = 3
tk1.DurationUnits = Gantt.DurationUnits.Days
gv.Tasks.Add(tk1)
Dim
tk2
As
New
Gantt.Task
tk2.Name =
"Task2"
tk2.Mode = Gantt.TaskMode.Automatic
tk2.ConstraintDate =
New
Date(2024,
9, 6)
tk2.ConstraintType = Gantt.ConstraintType.StartNoEarlierThan
tk2.Duration = 3
gv.Tasks.Add(tk2)
Dim
tk3
As
New
Gantt.Task()
tk3.Name =
"Task3"
tk3.Mode = Gantt.TaskMode.Automatic
tk3.ConstraintDate =
New
Date(2024,
9, 6)
tk3.ConstraintType = Gantt.ConstraintType.StartNoEarlierThan
tk3.Duration = 6
gv.Tasks.Add(tk3)
'将Task1设置为Task3的前驱任务,类型为FinishToStart(结束
- 开始)
Dim
pre
As
New
Gantt.Predecessor()
pre.PredecessorTask = tk1
pre.PredecessorType = Gantt.PredecessorType.FinishToStart
'前驱类型
pre.Lag = 5
'Task1结束5个工作日后,才能开始Task3
tk3.Predecessors.Add(pre)
'将Task2设置为Task3的前驱任务,类型为StartToStart(开始
- 开始)
pre =
New
Gantt.Predecessor()
pre.PredecessorTask = tk2
pre.PredecessorType = Gantt.PredecessorType.StartToStart
'前驱类型
tk3.Predecessors.Add(pre)
分析上面的代码,Task3开始的条件有三个,分别是:
1、不能早于2024年9月6日
2、Task1结束5个工作日之后
3、Task2已经开始
生成的甘特图如下:
提示
Predecessor除了PredecessorTask属性,还有一个PredecessorTaskID属性,用于指定前置任务的ID。
所以
pre.PredecessorTask = tk1
也可以改为:
pre.PredecessorTaskID = tk1.ID
创建Task的时候,会自动生成Task的ID,一般不要自行设置,以免出现重复。