我正在从DGV中的某些像元中解析值:
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.columnIndex == 17)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (int.TryParse(row.Cells[17].Value.ToString(), out result))
{
qtyFailed = Convert.ToInt32(row.Cells[17].Value);
}
else
{
qtyFailed = 0;
}
// Modify some stuff in the row depending on qtyFailed value
}
}
}
我需要qtyFailed来计算一些值并检查用户是否未输入一些无效信息。
它工作正常,但如果我像这样修改此列HeaderText:
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.Columns[17].HeaderText = "Failed";
}
应用启动时,我会得到一个System.ArgumentOutOfRangeException
。
即使出现错误,列HeaderText也会更改,并且可以按预期方式解析单元格值。
注释掉Headertext更改可消除该错误。
我不太了解发生了什么事。
答案 0 :(得分:1)
尝试一下
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) {
DataGridViewColumn result = dataGridView1.Columns.Cast<DataGridViewColumn>().FirstOrDefault(x => x.Index == 17);
if(result != null) {
result.HeaderText = "Failed";
}
}
希望有帮助,