Vb.net 如何调用动态创建的对象

Vb.net 如何调用动态创建的对象,vb.net,Vb.net,好的,这就是我所拥有的: Do x = x + 1 Dim myTxt As New TextBox myTxt.Name = ("TbMat" & x.ToString()) myTxt.Location = New Point(13, 13 + (x * 37)) myTxt.Tag = "For DB" myTxt.Visible = True Button2.L

好的,这就是我所拥有的:

    Do
        x = x + 1
        Dim myTxt As New TextBox
        myTxt.Name = ("TbMat" & x.ToString())
        myTxt.Location = New Point(13, 13 + (x * 37))
        myTxt.Tag = "For DB"
        myTxt.Visible = True
        Button2.Location = New Point(13, 39 + (x * 37))
        If x = 5 Then
            Button1.Dispose()
        End If
        Me.Controls.Add(myTxt)
        Me.Refresh()
    Loop Until x >= 1
这是我让用户通过点击按钮添加文本框的临时方法。我是编程新手,所以这可能是一个容易解决的问题,但这里是我的问题。。。当用户添加一个文本框时,我希望第一个文本框是“TbMat1”,因此我假设调用它来获取我只会使用的信息,例如textbox1.text=TbMat1.text。当我这样做的时候,它说TbMat1没有被声明,这是显而易见的,因为它还没有被创建


我需要帮助将信息从新的文本框拉到其他文本框,稍后我会找出导出的方法。谢谢。

创建控件时,将其创建为
myTxt
,这是控件的对象引用。因此,在存在代码块的过程中,这将起作用:

 SomeOtherTB.Text = myTxt.Text
名称是
仅是
名称,而不是对象引用或“句柄”。此外,一旦代码退出,过程
myTxt
就会超出范围,因为它是在该范围内声明的(
Dim
Private | Friend | Public
)。要在其他位置访问新控件,请执行以下操作:

SomeOtherTB.Text = Me.Controls("TbMat1")       ' or "TbMat" & x.ToString()
或创建一个新的对象引用(如果需要):

Friend myTB AS TextBox                        ' module level at least

myTb = Me.Controls("TbMat1") 

如果你制作了很多,后者可能不实用。

你可以使用像这样的
Me.FindControl(“TbMat”&x.ToString())
。这会将textbox实例作为对象返回,因此您必须在使用.Winforms之前将其强制转换为textbox?ASP.Net?等等?欢迎使用SO,用户2879745。