2015-12-09 8 views
-2

Я хочу добавить значение из массива в каждое текстовое поле.
Вот мой код:Почему я не могу ссылаться на имя текстового поля vb.net

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

Когда я запускаю выше код, я получил ошибку NullReferenceException.
Line Ошибка:

Me.Controls ("TextBox" & я + 1) .Text = Array (я)

Я попробовал другой код после поиска из Интернета,

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 («Текстовое поле» и 1) .Text = «1234» – Yuki

ответ

1

Поиск может возвращать Null (ничего), если он не находит результат, вызывающий ваше исключение нулевой ссылки.

Что касается перечисления/цикл по элементам управления TextBox:

Попробуйте явно зацикливание над ними с помощью Еогеасп на вашей коллекции элементов управления

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

Процесс вы используете теперь при попытке отображения на имя элемента управления не будет очень адаптируемым, особенно если кто-то еще длинный и изменит имя элемента управления.

Если есть только определенный набор текстовых полей, которые вы хотите обновить, вы можете поместить их в панель формы и использовать тот же метод, описанный выше, для прокрутки элементов управления панели.

+0

Я помещаю все текстовые поля на панель. Я думаю, что проблема не в том, что цикл. Я встретил исключение NullReference, даже напишу так:> Me. Элементы управления («Текстовое поле» и 1) .Text = «1234» – Yuki

+0

ОН МОЙ БОГ! Я не могу в это поверить ... Я написал:> Panel.Controls («Текстовое поле» и 1) .Text = «1234» - это WORK .. Как я STUPID! Спасибо за ваш ответ @DavidY – Yuki

+0

Это происходит :). Наслаждаться. – davidallyoung

Смежные вопросы