2012-02-26 68 views
0

我遇到了一个令人沮丧的错误,我确定它很简单,但我无法弄清楚是什么。设置datagridview单元格值的索引错误

这里是我的功能:。

public void setDistanceCellValue(int value, int row, int column) 
{ 
    try 
    { 
     Console.WriteLine("Row: " + row + " Column: " + column + " Value: " + value); 
       logGrid.Rows[row].Cells[column].Value = value.ToString(); 
    } 
    catch (Exception ex) 
    { 
      MessageBox.Show(string.Format("An error occurred: {0}" + "\r\n" + "\r\n" + "Row: " + row + " Column: " + column + " Value: " + value, ex.Message)); 
    } 
} 

logGrid值设定线就是与“索引超出范围示数出必须为非负数且小于集合的大小参数名称:索引“。

我一直在检查和检查,我的网格有6行8列,并且该函数被称为第2行第3列(因此所有的调试代码)。对于我的生活,我无法弄清楚为什么它说我正在使用负指数或e.rowIndex或7对于e.columnIndex大于5的指数。

帮我,如果你可以。

+0

你能告诉我们这个函数被调用的循环吗? – roymustang86 2012-02-26 21:37:12

回答

1

指数范围从0到N-1,而不是从1到N


编辑:

两个建议

  1. 现有Console.WriteLine之前添加额外的调试代码
Console.WriteLine("Row Count: {0}", logGrid.Rows.Count); 
    Console.WriteLine("Cell Count: {0}", logGrid.Rows[row].Cells.Count); 
  1. 检查AutoGenerateColumns p看看它是否符合你的预期。
+0

是的,这就是为什么对于总共6行,索引从0到5,但我不能解释为什么设置中间单元格的值(如果它只发生在0号或第N个索引)仍然会抛出该错误? – ikathegreat 2012-02-26 00:18:22

+0

这个'e.rowIndex'来自哪里。我的代码中没有看到任何'e'。错误是否发生在别的地方? – 2012-02-26 00:23:38

+0

,它简单地来自'private void logGrid_CellMouseDoubleClick(object sender,DataGridViewCellMouseEventArgs e)',以提供被双击的单元格的行和列索引。 – ikathegreat 2012-02-26 04:19:06

相关问题