2012-02-26 6 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 значения, что erroring с «Индекс находится вне диапазона Должно быть неотрицательным и меньше, чем размер сбора параметры name: index. "

Я проверил и проверил, и моя сетка имеет шесть строк и 8 столбцов, и функция получает вызов в строке 2 столбца 3 (отсюда и весь код отладки). Для моей жизни я не могу понять, почему он говорит, что я использую отрицательный индекс или индекс, превышающий 5 для e.rowIndex или 7 для e.columnIndex.

Помогите мне, если сможете.

+0

Вы можете показать нам цикл, в котором эта функция называется? – roymustang86

ответ

1

Индексы в диапазоне от 0 до N-1, а не от 1 до N.


EDIT:

Два предложения

  1. Добавить дополнительный отладочный код перед вашим существующим Console.WriteLine
Console.WriteLine("Row Count: {0}", logGrid.Rows.Count); 
    Console.WriteLine("Cell Count: {0}", logGrid.Rows[row].Cells.Count); 
  1. Проверьте AutoGenerateColumns р чтобы убедиться, что он установлен так, как вы ожидали.
+0

да, поэтому для 6 полных строк индекс идет от 0 до 5. но я не могу объяснить, почему значение для ячейки в середине (было бы легче отлаживать, если бы это происходило только на 0-й или N-й индекс) все еще бросает эту ошибку? – ikathegreat

+0

Откуда берется это 'e.rowIndex'. Я не вижу никаких «e» в вашем коде. Произошла ли ошибка где-то еще? –

+0

, который является просто из 'private void logGrid_CellMouseDoubleClick (отправитель объекта, DataGridViewCellMouseEventArgs e)', чтобы предоставить индекс строки и столбца ячейки, которая была дважды нажата. – ikathegreat

Смежные вопросы