从Windows窗体中删除控件并调整其他控件以适应

时间:2011-05-31 15:18:40

标签: c# winforms

我有一个Windows窗体应用程序,我可以通过单击按钮添加用户控件。 我也可以通过选择它并单击删除按钮一次删除一个控件。 一切正常但如果我添加三个控件并删除第二个,则表单上剩余的两个控件之间存在间隙。我希望将所有剩余的控制措施向上移动以填补空白。

像这样:

//添加三个控件,我们有这个:
控制1
控制2
Control3

//删除Control2,我们现在有了这个:
Control1

Control3

//我想要的是这个:
控制1
Control3

这是我尝试过的,但它没有完成这项工作

private void btQuestionDelete_Click(object sender, EventArgs e)
{
    bool adjustMode = false;
    int height = 0;

    foreach (Control c in this.tpQuestions.Controls)
    {
        if (c is QuestionControl)
        {
            if (adjustMode)
            {
                int moveUpBy = c.Top - height;
                c.Top = moveUpBy;
                c.Parent.Refresh();
            }
            else
            {
                QuestionControl q = (QuestionControl)c;
                if (q.IsSelected)
                {
                    this.tpQuestions.Controls.Remove(c);
                    adjustMode = true;
                    height = q.Height;
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

也许你想看一下flowLayoutPanels?

答案 1 :(得分:0)

要添加控件,请执行以下操作:

public void AddControl(ControlToAdd item)
{
    item.Dock = DockStyle.Top;

    this.Controls.Add(item);
}

要删除控件Dispose它!所有剩余的控件都会向上滑动!