Displaying duration in days in Gantt Chart Library for Windows Forms

If you need to define a custom column displaying and allowing the end user to edit a task duration in days in Gantt Chart Library for Windows Forms you can do it by using the following code, applicable to standard tasks within our Get Started sample application:

// Task class
public class MyTask : INotifyPropertyChanged
{
    [...]
    public int DaysDuration
    {
        get
        {
            int days = 0;
            for (DateTime d = Start.Date;
                d <= (Finish.TimeOfDay > TimeSpan.Zero ? Finish.Date : Finish.Date.AddDays(-1));
                d = d.AddDays(1))
            {
                if (Schedule.IsWorkingDay(d))
                    days++;
            }
            return days;
        }
        set
        {
            DateTime d = Start.Date;
            int days = value;
            while (days > 0)
            {
                if (Schedule.IsWorkingDay(d))
                    days--;
                d = d.AddDays(1);
            }
            Finish = d;
        }
    }
}

// Initialization
DataGridViewTextBoxColumn daysDurationColumn = new DataGridViewTextBoxColumn();
daysDurationColumn.HeaderText = "Duration (days)";
daysDurationColumn.DataPropertyName = "DaysDuration";
daysDurationColumn.ValueType = typeof(int);
// Add the Duration column after Start column.
ganttChartView.TasksTreeGrid.Columns.Insert(2, daysDurationColumn);