2012-01-17 43 views
1

オブジェクトリストからデータを取得しているDataGridViewがあります。しかし私のforeachの2番目のループはArgumentOutOfRangeExceptionになります。ここでmscorlib.dllでSystem.ArgumentOutOfRangeExceptionが発生しました。C#

が私のコードです:すべてがうまくある

foreach (Abonat abonat in list.getAbonati()) 
{ 
    dataGridView1.Rows[i].Cells[0].Value = abonat.id; //exception occurs here on second loop 
    dataGridView1.Rows[i].Cells[1].Value = abonat.prenume; 
    dataGridView1.Rows[i].Cells[2].Value = abonat.nume; 
    dataGridView1.Rows[i].Cells[3].Value = abonat.adresa; 
    i++; 
} 

初めてforeach実行、それものDataGridViewに表示が、2回目、私は(例外を取得、実際にそれがA語りますmscorlib.dllで 'System.ArgumentOutOfRangeException'タイプの最初のチャンス例外が発生し、フォームが表示され、foreachの残りの部分は実行されません。

これに関する助力?私はdataGridView1.Rows[i] = new DataGridViewRow();をインスタンス化しようとしましたが、それは読み取り専用です。

+0

例外にメッセージがあるはずです。それがなければそれほど役に立ちません。 「私」の価値は何ですか? –

+0

私は、あなたがどこで/増分iを定義したかを教えてくれません。 –

+0

「i」は最初は0で、「可能」例外が発生したときは1です。 –

答えて

4

アクセスする前に行を作成する必要があります。

int n = dataGridView1.Rows.Add(); 

dataGridView1.Rows[n].Cells[0].Value = title; 
dataGridView1.Rows[n].Cells[1].Value = dateTimeNow; 

次にあなたが.Cells [0] .Valueの= X [N] dataGridView1.Rows経由してアクセスできるようになります。

乾杯

0

この方法では追加できません。初心者のために、それは知られていないか、定義されていませんが、あなたはそれを増やします必要な数の行を追加できますが、間違って追加する行は、私たちがあなたに伝えようとしている行です。

ここで間違った使用法:dataGridView1.Rows [i] .Cells [0] .Value = abonat.id;

1

はあなたのコード

dataGridView1.ColumnCount = 4の上に、以下を追加します。 dataGridView1.ColumnHeadersVisible = true;

関連する問題