2015-12-09 97 views
-2

我想從數組中添加值到每個文本框。
這裏是我的代碼:爲什麼我不能引用文本框名稱vb.net

For i as int32 = 0 To Array.length - 1 
    Me.Controls("TextBox" & i + 1).Text = Array(i) 
Next 

當我上面的代碼運行,我得到了NullReferenceException異常錯誤。
錯誤行是:

Me.Controls( 「文本框」 & I + 1)。文本=陣列(ⅰ)

我試圖從web搜索之後另一個代碼,

For i as int32 = 0 To Array.length - 1 
    Dim c as Control() = Me.Controls.Find("TextBox" & i + 1 , True) 
    If c.Length = 1 Then 
     Me.Controls("TextBox" & i + 1).Text = Array(i) 
    End If 
Next 

但它仍然無法正常工作。 請幫助我...先進的感謝。

+5

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

+0

發生異常時* i *的值是多少?你有足夠的控制嗎? – JerryM

+0

即使寫入一行而沒有循環,也會發生錯誤。像這樣:> Me.Controls(「Textbox」&1).Text =「1234」 – Yuki

回答

1

如果找不到導致您的空引用異常的結果,則可以返回空(無)。

如果要列舉/循環您的文本框控件:

嘗試明確使用你的控件集合

For Each control In Me.Controls 
     If control.GetType() Is GetType(TextBox) Then 
      'Do stuff to control. 
     End If 
    Next 

你現在正在使用試圖映射到的過程中一個foreach循環在他們控制的名稱不會非常適應,特別是如果其他人長時間來改變控制的名稱。

如果只有一組您想要更新的文本框,您可以將它們放在窗體的面板上,並使用上述相同的方法循環顯示面板的控件。

+0

我把所有的文本框放在面板上。我認爲問題不是循環。我遇到了NullReference異常,甚至像這樣寫:> Me。控件(「Textbox」&1).Text =「1234」 – Yuki

+0

哦,我的上帝!我無法相信它......我寫道:> Panel.Controls(「Textbox」&1).Text =「1234」是WORK ..我是多麼愚蠢!謝謝你的回答@DavidY – Yuki

+0

它恰好:)。請享用。 – davidallyoung

相關問題