TableLayoutPanel只显示最后一行 - C#

时间:2013-02-18 21:11:44

标签: c# tablelayoutpanel

我有一个有10行2列的TableLayoutPanel。

我的问题是,当我在第一列中添加标签而在另一列中添加一个按钮时,一切都很好。但当我在例如添加另一个标签和按钮时在下一行,前一行是空的。似乎我的程序只显示最后添加的行。

代码:

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!

2 个答案:

答案 0 :(得分:1)

您必须为面板中的每个单元格创建 new 控件。

目前,您的代码控件移动到最后一列和最后一行。

这样的事情:

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

此处也必须添加任何事件处理程序,在处理程序结束时,您必须检查对象的“发送者”以查看用户按下的按钮。

答案 1 :(得分:0)

当你将它们添加到不同的单元格(因此是不同的控件)时,看起来Label和Button只能是单个控件的子控件。如果您需要所有填充标签和按钮的单元格,则每列需要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);
}