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);