2010-03-20 210 views
2

我需要動態創建文本框。 這是我的代碼,但這個我只能創建一個文本框:動態創建文本框

Public Sub CreateTextBox() 
     Dim I As Integer 
     Dim niz As Array 
     For I = 1 To 5 
      Dim myTextBox = New TextBox 
      myTextBox.Text = "Control Number:" & I 
      Me.Controls.Add(myTextBox) 
     Next 

    End Sub 

因此,如何我可以動態創建文本框?

謝謝!

+8

你確定它們不僅僅是彼此之上嗎? – 2010-03-20 16:30:07

+0

'niz'用於什麼?一個聲明'As Array'在VB中幾乎肯定是一個錯誤。 – 2010-03-20 16:33:43

+1

@Chris:讓你的評論成爲答案,你應該享有聲譽,並且問題可以被標記爲完成/回答。 – 2010-03-20 16:39:27

回答

2

此代碼實際上創建了TextBox的5個實例並將它們添加到當前表單中。問題在於你將它們疊加在一起。您需要使用佈局機制來正確顯示它們。

例如,此代碼將以自頂向下的方式將它們添加到FlowLayoutPanel

Public Sub CreateTextBox() 
    Dim I As Integer 
    Dim panel as New FlowLayoutPanel() 
    panel.FlowDirection = FlowDirection.TopDown 
    For I = 1 To 5 
    Dim myTextBox = New TextBox 
    myTextBox.Text = "Control Number:" & I 
    panel.Controls.Add(myTextBox) 
    Next 
    Me.Controls.Add(panel) 

End Sub 
0

您需要將控件的ID屬性設置爲每個控件都是唯一的。還要記住,使用動態創建的控件,您必須在每個頁面帖子中重新創建它們,以便能夠從控件集合中檢索任何信息。

+1

我認爲OP是在談論WinForms,而不是WebForms。 – 2010-03-20 16:40:41

2

克里斯是對的。您沒有設置位置,因此控件使用每個位置的默認位置。它們堆疊在一起。

您可能還想創建一個單獨的收集文本框,以便您可以從Forms.Controls集合中單獨訪問它們。

此外,您可能希望使用.Tag屬性以某種方式識別創建的控件。