我可以声明全局动态添加新按钮吗?

时间:2013-11-30 06:43:12

标签: vb.net

我的VB.NET项目需要帮助。我在按钮内声明了一个动态文本框“dim textbox as new textbox()”,当我按下button1时它将创建一个新的文本框,我也会在创建的新文本框上放置文本。现在已经创建了一个动态文本框。当我按下button2时,我想将标签上的文本与动态文本框中的文本进行比较,但是我收到的错误是,对象参考没有设置对象的实例。

2 个答案:

答案 0 :(得分:0)

我想你在按钮的click事件处理程序中创建了文本框。这样,您只能在此事件处理程序方法中访问它。要在其他事件处理程序中使用它,您需要将声明移动到类级别,例如:

Private txtBox As Textbox

Private Sub btn1_Click(sender As Object, e As EventArgs) Handles btn1.Click
     txtBox = New Textbox()
      ' ...
     Me.Controls.Add(txtBox)
End Sub

Private Sub btn2_Click(sender As Object, e As EventArgs) Handles btn2.Click
     If txtBox IsNot Nothing Then
          MsgBox(txtBox.Text)
     End If
End Sub

答案 1 :(得分:0)

试试这样。您必须将对文本框的引用存储在变量中,例如: G。在表单实例的范围内。

Public Class Form1

    Private dynTextbox As TextBox

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Me.dynTextbox = New TextBox
        With Me.dynTextbox
            .Top = Me.Button1.Top
            .Left = Me.Button1.Right + 5
            .Text = "test"
        End With
        Me.Controls.Add(Me.dynTextbox)
    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        If Me.dynTextbox IsNot Nothing Then MessageBox.Show(Me.Label1.Text = Me.dynTextbox.Text)
    End Sub

End Class

如果你动态创建多个文本框,你可以将它们存储在某个数组或列表中(例如在List(Of TextBox)中)然后你必须找到一种方法来引用你需要的那个,这取决于你的具体项目。