我在C#中制作一个小程序,用户必须选择一个特定日期并填写三个不同阶段的长度(开始 - ,中 - 和结束阶段)。收到这些数据后,我希望程序以DataGridView的形式显示时间线。因此列的总量应该是这些阶段长度的总和。现在我与实际日期没有任何关系,我只想要一个表格,显示与用户选择的天数一样多的列。
所以我 - 在C#中成为一个新手 - 认为我可以用“for循环”做到这一点
public static int startStage;
public static int midStage;
public static int endStage;
private DataGridView timeLine;
private DataGridViewColumn[] AllDays = new DataGridViewColumn[startStage+ midStage+ endStage];
private void createTimeLine()
{
for (int x = 0; x < (startStage+ midStage+ endStage); x++)
{
AllDays[x] = new DataGridViewColumn();
timeLine.Columns.Add(AllDays[x]);
}
}
嗯,这不起作用,因为timeLine.Columns.Add();
想要包含一个带有标题和类型的新列。我不知道该怎么做,谷歌也没有给我任何有用的建议。所以,如果有人能给我一个解决方案,或者只是在正确的方向上给予帮助,我将非常感激:)!
答案 0 :(得分:1)
我认为问题在于您需要为列指定单元格模板。
尝试以下方法:
new DataGridViewColumn() { CellTemplate = new DataGridViewTextBoxCell() };
更明确地说:
private void createTimeLine()
{
for (int x = 0; x < (startStage+ midStage+ endStage); x++)
{
AllDays[x] = new DataGridViewColumn();
AllDays[x].CellTemplate = new DataGridViewTextBoxCell(); // for TextBox
timeLine.Columns.Add(AllDays[x]);
}
}
这将生成没有标题的空白列。
您还可以通过生成DataGridViewTextBoxColumns来进一步缩短它:
private void createTimeLine()
{
for (int x = 0; x < (startStage+ midStage+ endStage); x++)
{
AllDays[x] = new DataGridViewTextBoxColumn();
timeLine.Columns.Add(AllDays[x]);
}
}
答案 1 :(得分:0)
您只需要添加HeaderText和Column To Columns.Add方法即可轻松实现....
public static int startStage=10;
public static int midStage=2;
public static int endStage=1;
private DataGridView timeLine= new DataGridView();
private void createTimeLine()
{
for (int x = 0; x < (startStage + midStage + endStage); x++)
{
timeLine.Columns.Add(x.ToString(),x.ToString());
}
}