Самоучка (в процессе) Visual Basic здесь.

Я искал четкий ответ на этот вопрос, но пока не пришел с пустыми руками.

Проблема...

  1. У меня есть два комбинированных списка. Первое поле со списком имеет 10 вариантов, второе поле со списком имеет 2 варианта.

  2. У меня есть 10 текстовых полей с именем, включающим один из 10 вариантов.

    ex имя 1-го текстового поля - "txb_Option1Type"

    Имя 2-го текстового поля - «txb_Option2Type» и так далее.

  3. У меня есть 2 вкладки, первые 5 текстовых полей на 1-й вкладке и последние 5 на 2-й вкладке.

  4. Я думал, что следующий фрагмент кода при нажатии кнопки перенесет текст выбранной опции во втором поле со списком в соответствующее текстовое поле ...

`Public Sub TransferTruckToDoorText ()

    Dim str_ErrorButton As String = cbx_DoorNumber.Text

    Dim str_ReplaceSpacesButton As String = str_ErrorButton.Replace(" ", "")

    Dim str_Button As String = str_ReplaceSpacesButton

'Ошибка нулевой ссылки в строке кода ниже

    Me.Controls("txb_" & str_Button & "Type").Text = cbx_TruckType.Text


End Sub

`

Как отмечено в приведенном выше коде, я получаю нулевую ссылку и, хоть убей, не могу понять, почему. Я прошел через код и не могу найти значение NULL или Nothing, которое могло бы вызвать эту ловушку.

Любая помощь будет оценена.

Отредактирован для ясности

2
ManyLeafClover 1 Апр 2014 в 20:17

2 ответа

Лучший ответ

Коллекция Me.Controls не выполняет автоматический поиск дочерних панелей.

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

Dim c As Control() = Me.Controls.Find("txb_" & str_Button & "Type", True)
If c.Length = 1 Then
  c(0).Text = cbx_TruckType.Text
End If
0
LarsTech 1 Апр 2014 в 16:48
Me.Controls.Item("txb_" & str_Button & "Type")
0
Petter Friberg 22 Май 2017 в 19:09