在c#中动态添加列 - 错误

时间:2017-03-08 11:19:04

标签: c# datagridview

我尝试运行这个代码

workersDVG.Columns.Add("WORKER", "worker");
DataGridViewRow row = (DataGridViewRow)workersDVG.Rows[0].Clone();
row.Cells["WORKER"].Value = 4;
workersDVG.Rows.Add(row);

但我得到了exeption,因为没有列名和#34; WORKER"。 如果有人能告诉我问题在哪里,我会很高兴。 TNX。

2 个答案:

答案 0 :(得分:0)

Clone()无效,因为克隆的行dows不包含列Worker。 试试这样:

workersDVG.Columns.Add("WORKER", "worker");
//add copy of first row (index 0)
int index = workersDVG.Rows.AddCopy(0);
//in var index you will find index of your newly added row.
//now add value of WORKER column in that new row
workersDVG.Rows[index].Cells["WORKER"].Value = 4;

答案 1 :(得分:0)

如果您查看DataGridViewRow 的文档,可以找到属性DataGridView

  

获取与此元素关联的DataGridView控件

如果您在调试器中查看此内容,您会看到它是null

enter image description here

因此row无法找到任何列! 此外,它的索引为-1,因为它位于DataGridView之外。

为什么不直接添加下面的行并直接更改值?!这有效:

workersDVG.Columns.Add("WORKER", "worker");
DataGridViewRow row = (DataGridViewRow)workersDVG.Rows[0].Clone();    
workersDVG.Rows.Add(row);
workersDVG.Rows[1].Cells["WORKER"].Value = 4;