从Windows窗体中删除一个控件,并调整其他控件使其适合

问题描述

| 我有一个Windows Form应用程序,可以通过单击按钮将用户控件添加到其中。 我也可以一次选中一个控件,然后单击删除按钮来删除它。 一切正常,但是如果我添加三个控件并删除第二个控件,则窗体上剩余的两个控件之间会有一个缝隙。我想让所有剩余的控件向上移动以填补空白。 像这样: //添加三个控件,我们有: 控制1 控制2 控制3 //删除Control2,我们现在有了这个: 控制1 控制3 //我想要的是: 控制1 控制3 这是我尝试过的,但没有完成工作
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;
                }
            }
        }
    }
}
    

解决方法

        也许您想看看flowLayoutPanels吗?     ,        要添加控件,只需执行以下操作:
public void AddControl(ControlToAdd item)
{
    item.Dock = DockStyle.Top;

    this.Controls.Add(item);
}
要删除一个控件只需
Dispose
!其余所有控件将向上滑动!     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...