Skip to main content

GanttControl.CustomDrawTaskDependency Event

Fires before a task dependency line in the chart area is displayed. Provides access to a drawing surface and allows you to draw the task manually.

Namespace: DevExpress.XtraGantt

Assembly: DevExpress.XtraGantt.v24.1.dll

NuGet Package: DevExpress.Win.Gantt

Declaration

[DXCategory("Events")]
public event CustomDrawTaskDependencyEventHandler CustomDrawTaskDependency

Event Data

The CustomDrawTaskDependency event's data class is CustomDrawTaskDependencyEventArgs. The following properties provide information specific to this event:

Property Description
Appearance Provides access to appearance settings that specify the dependency line background color.
Cache Provides access to the drawing surface and a cache of brushes, pens, fonts, and other graphics. Inherited from CustomDrawEventArgs.
Handled Gets or sets whether the event is handled and allows you to prevent the control from drawing the visual element in its default appearance. Inherited from CustomDrawEventArgs.
Lines Provides access to the collection of RectangleF structures that specify the processed dependency line.
PredecessorNode Gets the predecessor node.
State Gets the object state: normal, hot tracked, pressed, disabled, or selected.
SuccessorNode Gets the successor node.

The event data class exposes the following methods:

Method Description
DefaultDraw() Draws the task dependency line.

Example

The code below shows how to highlight specific tasks and dependencies.

image

Run Demo: Highlight Tasks and Dependencies

HashSet<int> tasks = new HashSet<int> { 1, 2, 3, 6, 7, 8, 10, 11, 13 };
ganttControl.CustomDrawTask += (sender, e) => {
    int taskId = Convert.ToInt32(e.Node.GetValue("Id"));
    if(tasks.Contains(taskId)) {
        e.Appearance.BackColor = DXSkinColors.FillColors.Warning;
        e.Appearance.ProgressColor = DXSkinColors.FillColors.Warning;
    }
};
ganttControl.CustomDrawTaskDependency += (sender, e) => {
    int predecessorId = Convert.ToInt32(e.PredecessorNode.GetValue("Id"));
    int successorId = Convert.ToInt32(e.SuccessorNode.GetValue("Id"));
    if(tasks.Contains(predecessorId) && tasks.Contains(successorId)) {
        e.Appearance.BackColor = DXSkinColors.FillColors.Warning;
    }
};
See Also