VB.NET获得动态控制的价值

时间:2014-10-17 14:35:29

标签: vb.net

我是VB的新手,遇到了一些问题。

我创建了子例程,每次单击按钮时都会自动将控件添加到panelcontrol,因此它可以创建任意多个。

这是子程序的代码。

Private Sub CreateControl()

    'CREATE TEXTBOX ITEMNO
    Dim i_Itemno As Integer = TextEditItemno.Length
    ReDim Preserve TextEditItemno(i_Itemno)
    TextEditItemno(i_Itemno) = New TextEdit
    With TextEditItemno(i_Itemno)
        .Name = "Txtitemno" & i_Itemno.ToString()
        If TextEditItemno.Length < 2 Then
            .SetBounds(0, 0, 32, 20)
        Else
            .Left = TextEditItemno(i_Itemno - 1).Left
            .Top = TextEditItemno(i_Itemno - 1).Top + TextEditItemno(i_Itemno - 1).Height + 4
            .Size = TextEditItemno(i_Itemno - 1).Size
        End If
        .Tag = i_Itemno
    End With
    AddHandler TextEditItemno(i_Itemno).TextChanged, AddressOf TextEditItemno_TextChanged
    PanelControl5.Controls.Add(TextEditItemno(i_Itemno))


    'CREATE TEXTBOX PRICE
    Dim i_Price As Integer = TextEditPrice.Length
    ReDim Preserve TextEditPrice((i_Price))
    Dim PriceX As Int16 = LblHarga.Location.X
    TextEditPrice(i_Price) = New TextEdit
    With TextEditPrice(i_Price)
        .Name = "Txtprice" & i_Price.ToString()
        If TextEditSatuan.Length < 2 Then
            .SetBounds(PriceX, 0, 70, 20)
        Else
            .Left = TextEditPrice(i_Price - 1).Left
            .Top = TextEditPrice(i_Price - 1).Top + TextEditPrice(i_Price - 1).Height + 4
            .Size = TextEditPrice(i_Price - 1).Size
        End If
        .Tag = i_Price
    End With
    AddHandler TextEditPrice(i_Price).TextChanged, AddressOf TextEditPrice_TextChanged
    PanelControl5.Controls.Add(TextEditPrice(i_Price))


End Sub

我点击按钮即可调用它。

Private Sub btnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNew.Click
    CreateControl()
End Sub

现在我正在寻找的是如何循环并获取这些文本框的价值,无论我创建了多少个textboxex。

 For i As Integer = 0 To TextEditItemno.Length - 1
        ' code to get the value of each textbox
    Next

谢谢

1 个答案:

答案 0 :(得分:1)

此代码会进入您的循环并根据i获取每个文本框的值。

Dim Text as String = TextEditItemno(i).Text

使用List(of Textbox)而不是一系列文本框也可以提供更好的服务。您无需担心重新调整阵列,只需执行MyListOfTextboxes.Add(TheNewTextBox)即可。您仍然可以使用与数组相同的方式检索每个文本框的值。