Click here to Skip to main content
15,881,757 members
Articles / Desktop Programming / Windows Forms
Tip/Trick

C# Winform Gantt Chart

Rate me:
Please Sign up or sign in to vote.
4.69/5 (21 votes)
11 Sep 2015CPOL 84.4K   8.7K   28   22
C# Gantt Chart For Winforms

Introduction

I have been needing an easy Gantt Chart for work and found there are almost no examples out there for C# and Winforms, but I found a good one in Visual Basic and even though I don't write in Visual Basic, I decided to convert it to C#.

Background

I found Adagio.81's Gantt Chart posted on October 2, 2008 and started there. You can see it at Gantt-Chart. This Gantt Chart has all the same features of Adagio81's Gantt Chart but I did fix a few little things and I updated the bar's values after a bar is moved and you can see the new values when you hover over in the tool tip.

Image 1

Using the Code

I add my code in the Form1.cs. There are three examples in Load and you have to hook up your events there also.

C#
//first Gantt Chart

ganttChart1 = new GanttChart();
ganttChart1.AllowChange = false;
ganttChart1.Dock = DockStyle.Fill;

ganttChart1.FromDate = new DateTime(2015, 12, 12, 0, 0, 0);
ganttChart1.ToDate = new DateTime(2015, 12, 24, 0, 0, 0);
tableLayoutPanel1.Controls.Add(ganttChart1, 0, 1);

ganttChart1.MouseMove += new MouseEventHandler(ganttChart1.GanttChart_MouseMove);
ganttChart1.MouseMove += new MouseEventHandler(GanttChart1_MouseMove);
ganttChart1.MouseDragged += new MouseEventHandler(ganttChart1.GanttChart_MouseDragged);
ganttChart1.MouseLeave += new EventHandler(ganttChart1.GanttChart_MouseLeave);
ganttChart1.ContextMenuStrip = ContextMenuGanttChart1;

List<BarInformation> lst1 = new List<BarInformation>();

lst1.Add(new BarInformation("Row 1", new DateTime(2015, 12, 12), 
	new DateTime(2015, 12, 16), Color.Aqua, Color.Khaki, 0));

lst1.Add(new BarInformation("Row 2", new DateTime(2015, 12, 13), 
	new DateTime(2015, 12, 20), Color.AliceBlue, Color.Khaki, 1));

lst1.Add(new BarInformation("Row 3", new DateTime(2015, 12, 14), 
	new DateTime(2015, 12, 24), Color.Violet, Color.Khaki, 2));

lst1.Add(new BarInformation("Row 2", new DateTime(2015, 12, 21), 
	new DateTime(2015, 12, 22, 12, 0, 0), Color.Yellow, Color.Khaki, 1));

lst1.Add(new BarInformation("Row 1", new DateTime(2015, 12, 17), 
	new DateTime(2015, 12, 24), Color.LawnGreen, Color.Khaki, 0));

foreach (BarInformation bar in lst1)
{
    ganttChart1.AddChartBar
    (bar.RowText, bar, bar.FromTime, bar.ToTime, bar.Color, bar.HoverColor, bar.Index);
} 

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Systems Engineer
United States United States
I Graduated with a Computer Information Science Degree in 1990 and have been working developing systems since then.

I started in COBOL, moved to PROGRESS, did a little RPG, then moved on to Mobile apps and desktop applications.

It's been a great journey Smile | :)

Comments and Discussions

 
QuestionAdjust the times Pin
Member 1589955530-Jun-23 11:58
Member 1589955530-Jun-23 11:58 
GeneralMy vote of 5 Pin
Marko Mrđa10-Jan-23 7:49
Marko Mrđa10-Jan-23 7:49 
BugVertical Scroll Pin
Member 1494594327-Sep-20 1:54
Member 1494594327-Sep-20 1:54 
Questionopen header date by horizontal scroll bar Pin
Member 148557128-Jun-20 8:55
Member 148557128-Jun-20 8:55 
Praisegood code Pin
Member 1209596529-Oct-18 20:12
Member 1209596529-Oct-18 20:12 
Questionthanks your shared Pin
Member 138945561-Jul-18 20:13
Member 138945561-Jul-18 20:13 
Questionis it possible to print? Pin
Hosam Alaa8-Jun-18 12:55
Hosam Alaa8-Jun-18 12:55 
QuestionGannt Chart component how to use in existing project ? Pin
Member 1367295222-Feb-18 23:00
Member 1367295222-Feb-18 23:00 
hi, first of all thanks..

I am using yoour gannt project in my project. I copied ganntChart class and dataclasses class. build my project.when I have drawed ganntchart control from toolbox, visual studio restart. Can you help me ? I need a gannt chart..

Generalthank you Pin
Ali Omoum1-Jan-18 8:15
Ali Omoum1-Jan-18 8:15 
QuestionText in bar, horizontal scroll bar, hover text Pin
Member 132898793-Jul-17 21:05
Member 132898793-Jul-17 21:05 
QuestionDay view Pin
jmad_197112-Apr-17 4:11
jmad_197112-Apr-17 4:11 
QuestionVS 2015 crashes Pin
muharrem15-Feb-17 2:02
muharrem15-Feb-17 2:02 
QuestionGitHub Pin
Crimdon27-Oct-16 3:08
Crimdon27-Oct-16 3:08 
AnswerRe: GitHub Pin
Member 786566117-May-18 18:40
Member 786566117-May-18 18:40 
QuestionHow do i add additional segment to existing bar with some separation base on stopwatch time? Pin
Member 124349387-Sep-16 20:31
Member 124349387-Sep-16 20:31 
QuestionGantt Chart C# Pin
Member 1249098629-Apr-16 3:13
Member 1249098629-Apr-16 3:13 
Questionhorizontal scroll bar Pin
billcodes23-Mar-16 0:13
billcodes23-Mar-16 0:13 
AnswerRe: horizontal scroll bar Pin
Member 1226777916-Jun-16 22:16
Member 1226777916-Jun-16 22:16 
Questionextend the bar till the end of todate? Pin Pin
billcodes21-Mar-16 3:33
billcodes21-Mar-16 3:33 
QuestionExist the option for drag drop for bar of the gantt? Pin
Besaleel M. Vieira17-Dec-15 1:50
Besaleel M. Vieira17-Dec-15 1:50 
QuestionNice Article Pin
Santhakumar Munuswamy @ Chennai11-Sep-15 22:16
professionalSanthakumar Munuswamy @ Chennai11-Sep-15 22:16 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.