2009-10-27 42 views
4

我遇到了DataGridView的麻煩。 當試圖刪除其中一個項目並重新加載網格時,我有一個綁定到網格的3個項目的集合。.Net DataGridView「索引0沒有值。」

如果有

If (dlg.ShowDialog() = DialogResult.OK) Then 
    'Show dialog with grid on it 
End If 

代碼在打開的對話框中,我刪除了從電網的項目(這應該反過來,從集合中刪除該項目,並重新加載網格),它返回到「如果(dlg.show ......」行,用

錯誤「類型‘System.IndexOutOfRangeException’的第一次機會異常在System.Windows.Forms.dll中發生

更多信息:索引2沒有值。「

(我有闖入調試器公共語言運行時錯誤設置)

我能理解這個錯誤,如果我試圖訪問任何細胞,行或列,但林不,然後我會期待例外停止試圖訪問這個網格數據的代碼行,而不是「If(dlg.ShowDialog()...」)行

任何想法? 乾杯

回答

8

我發現,如果你在

DataGridView.DataSource = Nothing 
DataGridView.Refresh() 

網格復位到集合前添加(除去已刪除項目)

DataGridView.DataSource = MyCollection 

它的工作原理就像一個魅力。 仍然感興趣的是爲什麼你必須這樣做。

+0

刷新不應該需要,可能會減慢速度。 – ceztko

0

由於您顯示模態對話框,因此可能會顯示拋出的錯誤。您是否嘗試在實際從網格/集合中刪除代碼的代碼行中設置斷點,以查看錯誤是否來自該網格/集合?

+0

我設置了一個斷點並通過刪除方法,它通過從集合中刪除項目並重新綁定網格上的數據源而沒有問題。拋出錯誤的位置在處理菜單項單擊事件(ctxMenuDelete.Click)的方法的「End Sub」上,從這裏返回到父對象的「If(dlg.ShowDialog()...」表格 – Ben

相關問題