2012-12-13 47 views
2

時,我有一個很奇怪的例外。我有一個datagridview綁定到一些數據。當數據源爲空時,向其添加一些數據,更新datagridview並嘗試設置我添加到editmode的行。下面是代碼:例外分配currentcell datagridview的

foreach (DataGridViewRow row in dataGridViewActionTemplates.Rows) 
{ 
    if (((GridActionTemplate)row.DataBoundItem).ID == actTemplate.Id) 
    { 
     dataGridViewActionTemplates.CurrentCell = row.Cells[dataGridViewActionTemplates.Columns.GetFirstColumn(DataGridViewElementStates.Visible).Index]; 
     dataGridViewActionTemplates.BeginEdit(false); 
     break; 
    } 
} 

當我試圖執行一個任務,我得到一個「IndexOutOfRange」異常和它說「指數-1不具有的價值。」這很奇怪,因爲分配的右側部分的索引大於零。

我會幫忙

+0

將這個成一個Int32變量dataGridViewActionTemplates.Columns.GetFirstColumn(DataGridViewElementStates.Visible)的.index然後引用它在細胞[MYVARIABLE],現在有什麼價值? – CR41G14

+0

'int CellIndex = dataGridViewActionTemplates.Columns.GetFirstColumn(DataGridViewElementStates.Visible).Index;' CellIndex是1.這就是爲什麼我不明白它是如何工作的 –

+0

它應該沒有什麼區別,但如果你在那裏硬編碼1,2或3,你會得到相同的異常嗎? – CR41G14

回答

0

我記得運行到有點類似的怪事,我終於發現了有關Windows 7中所選的Windows主題,在我的代碼工作正常的航空沒有例外的時候非常gratefull但在Win 7中啓用經典主題或在Windows 2003上運行代碼時,其行爲與您的類似。它與您的情況不完全相同,因此我不知道它是否是同一問題,但是可能是一個可能的事情來看待。具體問題與列和行標題的索引有關,奇怪的是它們不會在2個不同的主題中返回相同的值。也就是說,這可能是因爲你在不知不覺中試圖修改行標題字段而不是第一個實際的數據字段。