我有一个有 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);

天啊!

最佳答案

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

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

像这样的东西:

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

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

10-06 12:59