好吧,伙计们, 我使用循环来遍历datagirdview的行,以便更改某些值的长度。 显示的问题是:“索引超出范围,必须是非负数且小于集合的大小。参数名称。索引。”
for (k=1; k<=(dataGridView3.Rows.Count); k++)
{
string ChangeNumber = dataGridView3[k, 6].ToString();
ChangeNumber = ChangeNumber.Remove(ChangeNumber.Length - 2);
dataGridView3.Rows[k].Cells[6].Value = ChangeNumber;
}
我的datagridview是DataGridView3,我希望我的第6列最后有2位数字。所以我对第6列中所有行的单元格运行此迭代。有任何想法吗 ?
好的,这实际上有效...... !!!!
for (counter = 0; counter < (dataGridView3.Rows.Count); counter++)
{
string ChangeNumber = dataGridView3.Rows[counter].Cells["Value"].Value.ToString();
ChangeNumber = ChangeNumber.Remove(ChangeNumber.Length - 2);
dataGridView3.Rows[counter].Cells["Value"].Value = ChangeNumber;
}
它减少了我需要的2位数,但我仍然得到一个例外: 对象引用未设置为对象的实例。
答案 0 :(得分:0)
好的,我在这里回复你的问题和评论:
问题:我建议使用foreach(Row r in dataGridView3.Rows)
。这是迭代列表而不必检查空引用异常的简单方法。我已假设Row是一个类。如果它实际上类似于双数组,那么您只需要foreach(double[] d in dataGridView3.Rows)
。
评论:至于截断6000的最后两个数字,你可以通过Int.Parse(varHoldingSixThousand.ToString().Replace(000, 0));
来完成。
如果有什么事情没有意义,请告诉我。
修改:foreach(DataGridViewRow d in dataGridView3.Rows)
至于截断数字末尾的两位数字,您可以使用更具适应性的内容,例如:int.Parse(varHoldingNumber.ToString().Substring(varHoldingNumber.ToString().Length - 2, 2))