Question

I am looking for developing Gantt chart application in vb.net windows application. I wants to know is there any free third party tool or some demo application so that I can learn about it.

Was it helpful?

Solution

You can use System.Windows.Forms.DataVisualization.Charting to do so. Here is some sample code.

    Dim newSeries As New Series

    openConn()'opens the connection
    openRS("SELECT * FROM Data")'pull data from database
    Do Until rs.EOF
        newSeries = New Series'create a new dataSeries
        yPlot1 = CDbl(rs.Fields("Start Date").Value.ToOADate())'set beginning of bar
        yPlot2 = CDbl(DateAdd(DateInterval.Day, rs.Fields("Duration").Value, rs.Fields("Start Date").Value).ToOADate())'set end of bar
        newSeries.ChartType = SeriesChartType.RangeBar
        newSeries.YValuesPerPoint = 2
        newSeries.CustomProperties = "DrawSideBySide=false"
        xOrdinal = rs.Fields("Ordinal").Value
        newSeries.Points.AddXY(xOrdinal, yPlot1, yPlot2)
        newSeries.Points(0).ToolTip = rs.Fields("Task Name").Value.ToString
        newSeries.Name = rs.Fields("Task Name").Value.ToString
        newSeries.Points(0).Color = Color.FromKnownColor(DirectCast([Enum].Parse(GetType(KnownColor), CStr(rs.Fields("Color").Value.ToString)), KnownColor))
        newSeries.Points(0).AxisLabel = rs.Fields("Ordinal Name").Value.ToString
        seriesList.Add(newSeries)
        rs.MoveNext()
    Loop

    rs = Nothing
    cn.Close()
    cn = Nothing

    Chart1.Series.Clear()
    For Each plotSeries As Series In seriesList
        Chart1.Series.Add(plotSeries)
    Next
    Chart1.ChartAreas(0).AxisX.Interval = 1
    Chart1.ChartAreas(0).AxisY.Interval = 7
    Chart1.ChartAreas(0).AxisX.IsReversed = True
    Chart1.ChartAreas(0).AxisY.IsStartedFromZero = False
    Chart1.ChartAreas(0).AxisY.IsMarginVisible = False
    Chart1.ChartAreas(0).AxisY.IntervalType = DateTimeIntervalType.Days

    Chart1.ChartAreas(0).AxisY.Minimum = CDbl(#4/1/2012#.ToOADate())
    Chart1.ChartAreas(0).AxisY.Maximum = CDbl(#6/30/2012#.ToOADate())
    Chart1.ChartAreas(0).AxisY.LabelStyle.Format = "ddd M/d"

    Chart1.Update()

You will need a Chart control on your form (Chart1). And of course, your data may be different, but this may give you the step you are missing. You can also check out the following document for further details.

http://wiki.visualwebgui.com/pages/images/6/6a/MSChartsGanttChartAndPrinting.pdf

OTHER TIPS

You can easily draw GANTT chart using GDI API in VB.NET. Take a look at codeproject article.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top