2014-10-17 54 views
0

我是VB新手,遇到一些問題。VB.NET獲取動態控制值

我已經創建了子例程,每次點擊按鈕時都會自動將控件添加到面板控件,因此它可以創建儘可能多的我想要的。

這裏是子程序的代碼。

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 

現在我正在尋找的是如何循環和獲取這些文本框的價值,無論我創建了多少個文本框。

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

謝謝

回答

1

這一代碼進入到您的循環,並獲取基於i每個文本框的值。

Dim Text as String = TextEditItemno(i).Text 

您也可以更好地利用List(of Textbox)而不是文本框的數組服務。你不需要擔心調整陣列,你可以做MyListOfTextboxes.Add(TheNewTextBox)。您仍然可以像數組一樣檢索每個文本框的值。

+0

不錯,非常感謝。如何獲得焦點文本框的索引還有一個問題?我的意思是我已經創建了可能讓我說10個文本框,我設置我的光標到文本框沒有#3,所以這可以做到這一點?因爲有時我需要更新vaalue並重新計算它。 – user3197450 2014-10-17 22:47:54

+0

我會保留一個'CurrentTextbox'變量,並將其設置爲等於來自附加到文本框的'Focused'事件的'sender'變量。然後你可以做'TextEditItemno.IndexOf(CurrentTextbox)'。如果我的答案解決了您的原始問題,則應通過單擊旁邊的複選標記將其標記爲已接受的答案。 – 2014-10-18 01:50:59