2012-06-20 40 views
-1

異常的實例:
Vb.net:對象引用不設置爲一個對象

Object reference not set to an instance of an object. 

代碼:

For Each p As Panel In Me.Controls.OfType(Of Panel)() 
     arr.Add(p.BackColor.ToString()) 
     Me.Controls.Remove(p) 
    Next 

線:

arr.Add(p.BackColor.ToString()) 


我該如何解決這個問題?

+2

這不是你的問題的一部分,但要小心'Me.Controls.Remove(p)'行。它不會清除所有面板,因爲您在迭代它們時正在更改該集合。此外,它不會擺脫內存中的面板。爲此,您需要在其上調用Dispose()。 – LarsTech

+1

要修復可能出現的'Remove'問題,只需將'.OfType(Of Panel)()'改爲'.OfType(Of Panel)()。ToArray()'。 – Ryan

+0

可能的重複[什麼是NullReferenceException,以及如何解決它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it ) –

回答

3

你可能宣佈arr是這樣的:

Dim arr As List(Of String) 

您需要的變量初始化的List(Of String)一個實例,然後才能使用它。將其更改爲:

Dim arr As New List(Of String) 
+0

修正:) tnx! ! – AoTw

相關問題