2012-04-18 93 views
1

我試圖創建標籤和文本框的列表。沒有錯誤,但他們沒有在表單上呈現。我已經證實了我的循環有價值觀在WinForm中不呈現動態控件

Private Sub AddLabels_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    'MsgBox(strNumberOfLabels + " " + strOrderNum) 
    TableLayoutPanel1.AutoSize = True 
    TableLayoutPanel1.Visible = False 
    TableLayoutPanel1.SuspendLayout() 
    For i As Integer = 0 To strNumberOfLabels 

     'MsgBox(i) 
     Dim txtBox As New TextBox 
     Dim txtLabel As New Label 
     txtLabel.Text = "Label " + i 
     txtBox.Name = "txt" + i 
     TableLayoutPanel1.Controls.Add(txtLabel) 
     txtLabel.Show() 
     txtBox.Show() 
     TableLayoutPanel1.ResumeLayout() 
     TableLayoutPanel1.Visible = True 
    Next 
End Sub 

回答

0

嘗試使用其他Add超載,指定哪個列和行控制應該進入:

Dim txtLabel As New Label 
txtLabel.Text = "Label" + i.ToString 
'\\ TableLayoutPanel1.Controls.Add(txtLabel) 
TableLayoutPanel1.Controls.Add(txtLabel, 0, 0) 

這是沒有必要的:

'\\ txtLabel.Show() 

這應該移到循環之外:

Next 
TableLayoutPanel1.ResumeLayout() 
'\\ TableLayoutPanel1.Visible = True 

txtBox控件永遠不會被添加到TableLayoutPanel控件或窗體中。

我不認爲有必要在OnLoad過程中使您的TableLayoutPanel可見或不可見,但窗體尚不可見。

唯一確認的其他事情是strNumberOfLabels的值。我懷疑它是零。

+0

還沒有,但最後兩個肯定無法在循環工作 – Somejerk 2012-04-18 01:13:18

+0

@Somejerk除了我的筆記,我不能重現這個問題。我有一個進入TableLayoutPanel的標籤。 – LarsTech 2012-04-18 01:15:10

+0

我拿出了for循環,它仍然做到了,我確認了msgboxs的值。很奇怪。 – Somejerk 2012-04-18 01:35:02