2012-02-26 9 views
0

私はかなりわかりやすいエラーが発生していますが、何か簡単ですが、何が分かりません。ここでdatagridviewのセル値を設定するためのインデックスエラー

は私の関数である。

logGrid値設定ラインは、インデックスが範囲外です」と出てerroringされたものである
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)); 
    } 
} 

負でないコレクションのサイズよりも小さくなければなりません。パラメータ。名前:インデックス。

グリッドが6行8列あり、行2列3(つまりすべてのデバッグコード)で機能が呼び出されています。私の人生のために、e.rowIndexの場合は5、またはe.columnIndexの場合は7より大きいインデックスを使用しているという理由がわかりません。

できれば助けてください。

+0

この関数が呼び出されるループを表示できますか? – roymustang86

答えて

1

インデックスの範囲は、0からN-1であり、1からNではありません。


EDIT:

つの提案

Console.WriteLine("Row Count: {0}", logGrid.Rows.Count); 
    Console.WriteLine("Cell Count: {0}", logGrid.Rows[row].Cells.Count); 
  1. AutoGenerateColumns Pを確認してください、あなたはConsole.WriteLineを既存の前に追加のデバッグコードを追加します。あなたが期待どおりに設定されているかどうかを確認してください。
+0

はい、そのため、合計6行のインデックスは0から5になりますが、なぜセルの値を中央に設定するのか説明できません(0度でしか起こらなかった場合、デバッグが簡単になります)またはN番目のインデックス)はまだそのエラーをスローしますか? – ikathegreat

+0

この 'e.rowIndex'はどこから来ますか?あなたのコードに 'e'が表示されません。エラーはどこか別の場所で起こっていますか? –

+0

は、ダブルクリックされたセルの行と列のインデックスを提供するために 'private void logGrid_CellMouseDoubleClick(object sender、DataGridViewCellMouseEventArgs e) 'からのものです。 – ikathegreat

関連する問題