あなたが持っているタスクの回避策がある場合は、グローバル変数を避けてください。たとえば、追加したControlsコレクションからテキストボックスを取得できます。正しいテキストボックスを見つけるのに役立つものが必要です。今、あなたはそれを取得したいとき
Dim tp = TabControl2.TabPages(TabControl2.TabPages.Count - 1)
Dim txtbox As New TextBox()
txtbox.Location = New Point(200, 0)
txtbox.Height = 20
txtbox.Width = 100
txtbox.Name = "MyImportantTextBox"
tp.Controls.Add(txtbox)
別のシンプルな可能性、テキストボックスTextChangedイベントのハンドラを追加し、そのテキストボックスに何かを入力したときのラベルの内容を反映もあり
Dim tp = TabControl2.TabPages(TabControl2.TabPages.Count - 1)
Dim textbox = tp.Controls.
OfType(Of TextBox).
FirstOrDefault(Function(x) x.Name = "MyImportantTextBox")
if textbox IsNot Nothing Then
label.Text = textbox.Text
End If
。
Dim tp = TabControl2.TabPages(TabControl2.TabPages.Count - 1)
Dim txtbox As New TextBox()
txtbox.Location = New Point(200, 0)
txtbox.Height = 20
txtbox.Width = 100
AddHandler txtbox.TextChanged, AddressOf OnMyTextBoxChange
tp.Controls.Add(txtbox)
そしてこの
Sub OnMyTextBoxChange(sender as Object, e as EventArgs)
Dim txtbox = DirectCast(sender, TextBox)
label.Text = txtbox.Text
End Sub
モジュール内にテキストボックスを宣言すると、完了です! 'Dim txtbox As New TextBox()'は必要ありません。大規模なプロジェクトでは、新しい名前を見つけるのが難しくなるか、スレッドを使用するときにグローバル変数が悪いです。それ以外の場合は問題ありません。 –
@編集者:最後のタブページにテキストボックスを動的に追加しているようです。おそらく、彼はまた新しいタブページを動的に追加しているので、グローバル変数はテキストボックスのリスト_でなければうまく動作しません。 –