4

我有一个 TableLayoutPanel,它有 10 行和 2 列。

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

代码:

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);

天呐!

4

2 回答 2

2

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

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

像这样的东西:

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

任何事件处理程序也必须在这里添加,在处理程序端,您必须检查对象的“发送者”以查看用户按下了哪个按钮。

于 2013-02-18T21:16:33.263 回答
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);
}
于 2013-02-18T21:18:28.560 回答