1

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

    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 没有声明,这很明显,因为它还没有创建。

我需要帮助将信息从新文本框拉到其他文本框,稍后我会弄清楚如何导出。谢谢。

4

1 回答 1

2

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

 SomeOtherTB.Text = myTxt.Text

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

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

或者,如果您愿意,可以创建一个新对象 ref:

Friend myTB AS TextBox                        ' module level at least

myTb = Me.Controls("TbMat1") 

如果您要大量生产,后者可能不实用。

于 2013-10-14T17:24:56.497 回答