【问题标题】:Index out of range exception in datagridview when header is selected选择标题时,datagridview 中的索引超出范围异常
【发布时间】:2014-07-25 06:58:19
【问题描述】:

我有一个 datagridview,当我单击标题进行排序或出于任何原因时,我在以下代码行中收到以下错误......

论证我们的范围异常(索引超出范围。必须为非负数且小于集合的大小。

 private void firearmView_CellClick(object sender, DataGridViewCellEventArgs e)
    {
            //I get the above error on the IF line below.
            if (!firearmView.Rows[e.RowIndex].IsNewRow) 
            {
                selectedFirearmPictureBox.Image = Image.FromFile(firearmView.Rows[e.RowIndex].Cells[12].Value.ToString(), true);
            }

    }

我不知道为什么我会在此处收到此特定错误。

【问题讨论】:

  • 我怀疑Cells[12]。一排有多少个单元格?
  • 如果从 0 开始,则此表为 14。单元格 12 是照片路径所在的位置。这就是我填充图片框的方式。
  • 没问题,那我怀疑@Steve 有答案!
  • 感谢巴里克的帮助。
  • 我不知道这是否可能相关stackoverflow.com/questions/26280837/…

标签: c# datagridview


【解决方案1】:

MSDN 在文档中提到 RowIndex property

当 RowIndex 属性返回 -1 时,单元格是一列 标题,或者单元格的行是共享的。

因此您需要在收到事件时处理 e.RowIndex == -1
(……索引不能为负数……)

private void firearmView_CellClick(object sender, DataGridViewCellEventArgs e)
{

    if(e.RowIndex == -1) return;

    if (!firearmView.Rows[e.RowIndex].IsNewRow) 
    {
        selectedFirearmPictureBox.Image = Image.FromFile(firearmView.Rows[e.RowIndex].Cells[12].Value.ToString(), true);
    }
}

【讨论】:

  • 感谢史蒂夫,这是正确的。引起了另一个问题,可能是我的错。但是,对于其他人,我将发布一个新问题。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多