Хорошо, я попробую, но я действительно ржавый с WinForms, чуть менее ржавый с VB.NET. Вам нужно найти элемент управления, который вы хотите обновить, и вы сможете сделать это с помощью коллекции Controls
соответствующего контейнера - в этом случае, скорее всего, TabPage
:
TextBox tb1 = CType(tabpage.Controls.Find("textBox1", false), TextBox)
tb1.Text = "I set the text!"
Синтаксис может быть немного отключен, но, надеюсь, это, по крайней мере, укажет вам правильное направление.
См. Control.ControlCollection.Find Method
ОБНОВЛЕНО
Ханс Пассант предположил, что это не работает, потому что вы не установили свойство Name
(я предполагаю, что он имеет в виду имя элементов управления, а не вкладку). Я немного больше прочитал о методе ControlsCollection.Find
, и MSDN говорит: «Поиск элементов управления по их свойству Name и создание массива всех соответствующих элементов управления». Вы (и я) пытались найти элемент управления по имени экземпляра (textbox1, textbox2) - это были имена instance для двух элементов управления, а не names .
Так что попробуйте это вместо:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim tabpage As New TabPage
tabpage.Text = "(empty)"
Dim textbox1 As New TextBox
Dim textbox2 As New TextBox
textbox1.Parent = tabpage
textbox2.Parent = tabpage
textbox1.Location = New Point(10, 10)
textbox2.Location = New Point(10, 30)
textbox1.Name = "textbox1"
textbox2.Name = "textbox2"
TabControl1.TabPages.Add(tabpage)
End Sub
Тогда вы можете найти элемент управления, используя:
TextBox tb1 = CType(TabControl1.TabPages.Item(TabControl1.TabPages.Count - 1).Controls.Find("textbox1", True)(0), TextBox)
tb1.text = "Test"
Попробуйте и посмотрите, работает ли он для вас. Ключ (и то, что я упустил, глядя на твой код прошлой ночью, так как он был для меня после сна), теперь был способ идентифицировать элемент управления в методе Find
.