从具有修改的 HeaderText 的列中解析单元格值
Posted
技术标签:
【中文标题】从具有修改的 HeaderText 的列中解析单元格值【英文标题】:Parsing a cell value from a column with modified HeaderText 【发布时间】:2018-07-16 12:40:32 【问题描述】:我正在从 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】:试试这个,
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";
希望有帮助,
【讨论】:
同样的异常仍然被抛出,我真的不明白为什么。 可以清理和重建您的解决方案。如果它也不起作用,则应该有另一个事件。 @A.Petit以上是关于从具有修改的 HeaderText 的列中解析单元格值的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Docs 电子表格的列中计算具有任何值(字符串或数字)的单元格数