如何调用动态创建的对象

时间:2013-10-14 17:13:19

标签: 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.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,这很明显,因为它还没有被创建。

我需要帮助将新文本框中的信息提取到其他文本框中,稍后我会想出导出。感谢。

1 个答案:

答案 0 :(得分:2)

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

 SomeOtherTB.Text = myTxt.Text

名称是just名称,而不是对象引用或“句柄”。此外,一旦代码退出,该过程myTxt超出范围,因为它是声明它的地方(DimPrivate|Friend|Public)。要在其他地方访问您的新控件:

SomeOtherTB.Text = Me.Controls("TbMat1")       ' or "TbMat" & x.ToString()

如果需要,或者创建一个新的对象引用:

Friend myTB AS TextBox                        ' module level at least

myTb = Me.Controls("TbMat1") 

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