解析具有修改的HeaderText的列中的单元格值

时间:2018-07-16 12:40:32

标签: c# datagridview

我正在从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更改可消除该错误。

我不太了解发生了什么事。

1 个答案:

答案 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";
       }
}

希望有帮助,