Во-первых, давайте позаботимся о NullReferenceException
- вам нужно поддерживать ссылки на свои элементы управления. Например, вы динамически создаете форму следующим образом: Dim f as New Form()
. В этом случае вы можете добавлять к нему элементы управления и т. Д., Но вы не можете иметь внутренний контроль над объявлением. Итак, вы добавляете элементы управления, f.Controls.Add...
Я думаю, что вы создали форму, на которой вы динамически добавляете элементы управления. В этом случае вы можете сделать
Dim ctrlList As New Dictionary(Of String, Control)()
Dim txtBox1 As New TextBox()
txtBox1.Location = New Point(0, 0)
' set txt box here . . .
Me.Controls.Add(txtBox1)
ctrlList.Add("txtBox1", txtBox1) ' reference this to get to controls dynamically
Как набрать контроль. Существует два основных метода. Один - программно, другой - с помощью привязок.
Поскольку вы делаете что-то динамически, вот что вы можете сделать - построить экран полностью динамически. Для этого, если, например, ваш оператор select будет Select col1, col2, col3 from table
, вы создадите текстовое поле для каждого столбца и поместите его в нужное место. Теперь вы можете получить DataRow
из выбранной строки в сетке и набор текста текстового поля в
ctrlList("col1").Text = dr("col1")
Где «col1» будет одновременно - имя ключа для вашего контроля и столбца. Вы также можете назвать этот контроль тоже.
Второй метод использует привязки. Вы можете привязать свою сетку и текстовые поля.Таким образом, вы берете свои средства управления заранее, а затем вам не нужно устанавливать свойство text
.
С помощью этой системы вы можете полностью динамически загружать любые данные. Итак, если у вашего select
будет 10 столбцов, у вас будет 10 элементов управления и т. Д. После того, как вы закончите с экрана, вам нужно удалить все из формы и коллекции и приготовьтесь перезагрузить новый набор элементов управления.
Но я должен сказать, вам нужно немного опыта, чтобы создать действительно функциональную систему, подобную этой.
Помимо прочего, если вы создаете элементы управления во время выполнения, вы должны разработать способ сохранить ссылку на них или найти их в коллекции 'Controls' – Plutonix