winforms 当其他某些TableLayoutPanel控件不可见时,TableLayoutPanel交换控件位置

oo7oh9g9  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(220)

在我的设计器中,我创建了一个tableLayoutPanel,其中每个单元格都有一个Checkbox。

我只想让从0到14的复选框可见。但是在运行时,它交换了12和14,我真的不知道为什么(见第二张图)。

我试图删除tableLayoutPanel并重新构建一个新的,但它再次交换了复选框...
注意:如果我使所有复选框可见,则不会发生交换
如果我在设计器中交换复选框14和12,它将在运行时正确显示,但我想知道为什么会发生这种交换

1rhkuytd

1rhkuytd1#

好的,我找到了原因,由于某种原因,在设计器中,当我在每一列中添加复选框时,在Form.Designer.cs中生成的代码将所有复选框添加到第一列。

this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao12, 0, 2);
this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao13, 0, 2);
this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao14, 0, 2);
this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao15, 0, 2);
this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao16, 0, 2);
this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao17, 0, 2);

注意:第二个参数是列索引(零参数)
我所需要做的就是编写(在Form.Designer.cs中)正确的列索引,如下所示:

this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao12, 0, 2);
this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao13, 1, 2);
this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao14, 2, 2);
this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao15, 3, 2);
this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao16, 4, 2);
this.tlpRob1Cartao.Controls.Add(this.ckRob1Cartao17, 5, 2);

相关问题