C# TableLayoutPanel控件。添加问题

C# TableLayoutPanel控件。添加问题,c#,tablelayoutpanel,C#,Tablelayoutpanel,我有一个2列4行的TableLayputPanel,我正在尝试在运行时向它添加按钮。我想动态地将每个按钮添加到第一个单元格: private int nextIndex = 1; private void bAddButton_Click(object sender, EventArgs e) { Button newButton = new Button(); newButton.Text = nextIndex.ToString(); tableLayoutPane

我有一个2列4行的TableLayputPanel,我正在尝试在运行时向它添加按钮。我想动态地将每个按钮添加到第一个单元格:

private int nextIndex = 1;

private void bAddButton_Click(object sender, EventArgs e)
{
    Button newButton = new Button();
    newButton.Text = nextIndex.ToString();
    tableLayoutPanel1.Controls.Add(newButton, 0, 0);  // first cell
    nextIndex++;
}
据我所知,这应该将所有现有按钮向上移动到一个单元格中。这似乎在前三次有效,但在那之后,将新按钮插入第二个单元格几次,然后插入第三个单元格,然后插入第四个单元格,以此类推

对于给定单元格,可以调用Controls.Add(ctrl、column、row)的次数是否有限制


我有点卡住了,我做错了什么?

要在单个单元格中添加多个按钮,您需要添加一个面板作为单元格中的唯一控件,然后将您的按钮添加到该面板。

我刚刚遇到了同样的问题!帮助我的是:

  • 在窗体的“设计”视图中,单击表格

  • 将AutoScroll和AutoSize设置为True

  • 转到编辑行和列

  • 单击第一行(可能是唯一一行),并将其大小类型设置为“自动调整大小”


  • 所有新行也将具有大小类型AutoSize。由于这一点,我的行被正确定位并调整大小。

    是否只想将按钮添加到第一个单元格?我没有答案,但我确实看到了相同的行为。在一个3x3的面板上,我得到了7,6,9,然后是8,5,2和1,4,3。尽管微软文档似乎没有提到转移现有价值,但它确实表示,添加的控制将放在给定的位置。所以至少我应该在0,0单元中得到9。更奇怪的是事情是如何变化的。单击三次后,您有3 2 1。第四个按钮在3之后插入,因此得到3 4 2 1。但在第五次单击时,5会在4之后插入,但4也会移动到第一个位置,1和2也会切换位置!很奇怪!So 321;3421; 45312; 456123; 5674123我看不出其中有任何逻辑。嗨,马特,谢谢你的快速回复,对不起,我可能不够清楚,我只希望每个单元格有一个按钮,但我想将新按钮添加到第一个单元格,使所有现有按钮移动一个单元格。我的代码前三次确实有效,但之后相同的代码插入了错误的单元格。嗯,我明白你的意思,它确实做了一些非常奇怪的事情,不是吗。谢谢!!你也帮了我!