VB Net通过变量名访问表单控件

时间:2017-06-26 22:50:41

标签: vb.net

从FormName2开始,我需要通过字符串名称在FormName1中的TextboxName1中设置文本。

然后,从FormName2,我应该设置像FormName1.TextboxName1.text = "test"这样的文本。 但是,我需要使用控件的字符串名称来实现它。

stringFormName.stringTextboxName.text ="test"

如何到达?

2 个答案:

答案 0 :(得分:2)

您可以在Application.OpenForms集合中检索所有已打开的表单实例 使用该集合,您可以检索具有指定名称

的表单
Dim aForm = Application.OpenForms.Item("FormName1")

此时,您可以使用具有特定名称的控件的相同模式扫描此表单的控件

If aForm IsNot Nothing Then
   Dim aControl = aForm.Controls.Item("TextBoxName1")
   if aControl IsNot Nothing then
      aControl.Text = "test"
   End If
End If 

此搜索控件的唯一问题是控件可能包含在与顶级窗体不同的控件容器中。例如,控件可以位于GroupBox或Panel中。在这种情况下,您需要使用Control集合中的Find方法,并将第二个参数设置为true以搜索所有控件层次结构

  Dim aControl = aForm.Controls.Find("TextBoxName1", True)

答案 1 :(得分:1)

使用FindControl:

Private Sub Button1_Click(sender As Object, MyEventArgs As EventArgs)
    Dim myControl1 As Control = FormName1.FindControl("stringTextboxName")
    If (Not myControl1 Is Nothing)
       ' Get control's parent.
       Dim tb as TextBox= CType(myControl1, TextBox)
       tb.text="test"
    Else
       Console.WriteLine("Control not found.....")
    End If
    End Sub

如果您有嵌套元素,则可能需要递归调用find控件。