C# 不覆盖动态创建的标签和文本框

C# 不覆盖动态创建的标签和文本框,c#,winforms,C#,Winforms,当组合框更改时,我正在创建一些标签和文本框。我使用的是一个2列5行的tableFlowContainer。这在第一次更改选择时效果很好,但是如果我进行另一次选择,标签和文本框将不符合指定的位置,而是以1个元素的增量插入。应该是{0,0}的是{0,1},{0,1}到{1,0}等等 有没有办法在重写之前清除任何标签和文本框? 这是我的密码 private void cbPI_SelectedIndexChanged(object sender, EventArgs e) { //TextBo

当组合框更改时,我正在创建一些标签和文本框。我使用的是一个2列5行的tableFlowContainer。这在第一次更改选择时效果很好,但是如果我进行另一次选择,标签和文本框将不符合指定的位置,而是以1个元素的增量插入。应该是{0,0}的是{0,1},{0,1}到{1,0}等等

有没有办法在重写之前清除任何标签和文本框? 这是我的密码

private void cbPI_SelectedIndexChanged(object sender, EventArgs e)
{
    //TextBox[] txtBox = new TextBox[5];
    // Label[] lbls = new Label[5];

    for (int x = 0; x <= 4; x++)
    {
        txtBoxs[x] = new TextBox();
        this.txtBoxs[x].Text = "Text"+x;
        this.txtBoxs[x].Name = "txtBoxName"+x;
        this.txtBoxs[x].Anchor = System.Windows.Forms.AnchorStyles.Top;
        this.Controls.Add(txtBoxs[x]);

        lbls[x] = new Label();                
        this.lbls[x].Text = "label"+x;
        this.lbls[x].Name = "lblBoxName1"+x;
        this.lbls[x].Anchor = System.Windows.Forms.AnchorStyles.Right;
        this.Controls.Add(lbls[x]);

        tableLayoutPanel1.Controls.Add((lbls[x]), 0, x);
        tableLayoutPanel1.Controls.Add(txtBoxs[(x)], 1, x);

    }              
}
private void cbPI\u SelectedIndexChanged(对象发送方,事件参数e)
{
//TextBox[]txtBox=新的TextBox[5];
//标签[]lbls=新标签[5];

对于(int x=0;x在添加新控件之前,您不应该先清理以前添加的控件吗?tableLayoutPanel1.controls.Clear()?@TaW就是这样,现在看来是这样。谢谢。我没有想到的最简单的事情和复杂的事情让我很困惑。:)但是,请注意,为了避免内存泄漏,您还必须将它们全部处理掉!:调用Clear方法不会从内存中删除控制句柄。您必须显式调用Dispose方法以避免内存泄漏。对于我来说,标签硬编码到第1列,但第二次是通过第2列中的写入进行的,这似乎也是不合逻辑的。在再写一次就能解决问题。