2012-01-17 66 views
1

我有一個DataGridView,我從一個對象列表中填充。但是,我的第二個循環通過我的foreach產生ArgumentOutOfRangeExceptionSystem.ArgumentOutOfRangeException發生在mscorlib.dll 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,但第二次,我得到的異常(實際上它說一個在mscorlib.dll中發生類型'System.ArgumentOutOfRangeException'的第一次機會異常),並顯示我的表單,而不運行其餘的foreach。

對此有何幫助?我嘗試過對dataGridView1.Rows[i] = new DataGridViewRow();進行實例化,但它是隻讀的。

+0

在例外中應該有一條消息 - 沒有這個,這不是非常有用。 「我」的價值是什麼? – 2012-01-17 20:12:43

+0

你沒有向我們展示你定義/增加i的位置。 – 2012-01-17 20:12:52

+0

'i'在開始時爲0,在發生「可能」異常時爲1。 – 2012-01-17 20:13:34

回答

4

您需要在嘗試訪問它們之前創建行;

int n = dataGridView1.Rows.Add(); 

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

然後,你就可以經由dataGridView1.Rows訪問它們[Ñ] .Cells [0]。價值= X;

乾杯

0

你不能這樣添加它。對於初學者來說,它不是知道或定義的,但是你會增加它。您可以添加任意數量的行,但您錯誤地添加它們是我們試圖告訴您的。

不正確的用法在這裏:dataGridView1.Rows [i] .Cells [0] .Value = abonat.id;

1

添加以下代碼

dataGridView1.ColumnCount = 4的上方; dataGridView1.ColumnHeadersVisible = true;

相關問題