从具有修改的 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 电子表格的列中计算具有任何值(字符串或数字)的单元格数

使用 XLRD 从 excel 表中的列中读取 int 值

如何在 BigQuery 的标准 SQL 中解析具有不同日期字符串的列中的值

从excel vba的列中的所有单元格中删除不需要的字符

如何从 BigQuery 的列中解析 JSON 文件

迭代具有固定行的列