通过代码将新列添加到Winforms DataGridView

我正在尝试为给定月份的每一天添加N个列:

var daysCount = DateTime.DaysInMonth(DateTime.Now.Year, month); for (int i = 1; i <= daysCount; i++) { dataGridView1.Columns.Add(new DataGridViewColumn() { HeaderText = i.ToString() }); } 

我收到这个错误:

至少有一个DataGridView控件的列没有单元格模板。

当您创建新的datagridview列时,它非常空白。 您需要设置列的celltemplate ,以便它知道要为网格中的单元格显示哪些控件。 或者我认为如果你使用一些更强大的类型列(DataGridViewTextBoxColumn),那么你可能没问题。

问题源于您未设置DataGridViewColumn.CellTemplate

对于这种情况, DataGridViewTextBoxCell作为CellTemplate就足够了。

  var daysCount = DateTime.DaysInMonth(DateTime.Now.Year, 1); for (int i = 1; i <= daysCount; i++) { dataGridView1.Columns.Add(new DataGridViewColumn() { HeaderText = i.ToString(), CellTemplate = new DataGridViewTextBoxCell() }); } 

您需要先指定它是文本框列还是combobox列试试这样才能生效

 var daysCount = DateTime.DaysInMonth(DateTime.Now.Year, month); for (int i = 1; i <= daysCount; i++) { dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = i.ToString() }); } 

设置表并添加所需的列。 然后使用:

 var daysCount = DateTime.DaysInMonth(DateTime.Now.Year, 1); for (int i = 0; i <= daysCount; i++) { i = dataGridView1.Rows.Add(new DataGridViewRow()); dataGridView1.Rows[i].Cells["YourNameCell"].Value = i.ToString(); } 

第一行是0,而不是1.可能你的错误是这些。