2013-02-18 96 views
4

我有一個TableLayoutPanel有10行和2列。TableLayoutPanel只顯示最後一行 - C#

我的問題是,當我在第一列中添加標籤並在另一列中添加按鈕時,一切都很好。但是當我在例如另一個標籤上添加另一個標籤和下一行,前面的行是空的。看來我的程序只顯示最後添加的行。

代碼:

Label lblProjectName = new Label(); 
lblProjectName.Text = "test"; 
lblProjectName.Anchor = AnchorStyles.Left; 
Button btnProject = new Button(); 
btnProject.Text = "Fill In"; 

tlpProject.Controls.Add(lblProjectName, 0, 0); 
tlpProject.Controls.Add(btnProject, 1, 0); 

tlpProject.Controls.Add(lblProjectName, 0, 1); 
tlpProject.Controls.Add(btnProject, 1, 1); 

TNX!

+0

請您的具體問題,更新您的頭銜。 – 2013-02-18 21:13:31

+0

對不起,編輯吧:) – StevenVerheyen 2013-02-18 21:15:17

回答

1

您必須爲面板中的每個單元格創建一個新的控件。

當前,您的代碼是控件移動到最後一列和最後一行。

事情是這樣的:

for (int i = 0; i < numRows; ++i) { 
    Button btnProject = new Button(); 
    btnProject.Text = "Fill In"; 
    tlpProject.Controls.Add(btnProject, 1, i); 
} 

任何事件處理程序將有太多在這裏添加,其中在處理結束時,你必須檢查對象的「發件人」看到用戶按下哪個按鈕。

+0

那好吧。從來沒有想到這一點!謝謝 :) – StevenVerheyen 2013-02-18 21:17:31

0

看起來標籤和按鈕只能是兒童單一控制,而你將它們添加到不同的單元格(因此不同的控制)。如果您需要使用標籤和按鈕填充所有單元格,則每列需要10個標籤和10個按鈕。看代碼:

for(int i=0;i<10;i++){ 
var lblProjectName = new Lable(); 
lblProjectName.Text = "test"; 
lblProjectName.Anchor = AnchorStyles.Left; 
var btnProject = new Button(); 
btnProject.Text = "Fill In"; 

tlpProject.Controls.Add(lblProjectName, 0, i); 
tlpProject.Controls.Add(btnProject, 1, i); 
}