Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Windows窗体中删除控件并调整其他控件以适应_C#_Winforms - Fatal编程技术网

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

C# 从Windows窗体中删除控件并调整其他控件以适应,c#,winforms,C#,Winforms,我有一个Windows窗体应用程序,可以通过单击按钮向其中添加用户控件。 我还可以通过选择一个控件并单击“删除”按钮,一次删除一个控件。 所有这些都很好,但是如果我添加三个控件并删除第二个控件,那么表单上剩余的两个控件之间就会有一个间隙。我想让所有剩余的控件向上移动以填补空白 像这样: //添加三个控件,我们就有了: 控制1 控制2 控制3 //删除Control2,我们现在有了: 控制1 控制3 //我想要的是: 控制1 控制3 这是我尝试过的,但它不起作用 private void btQu

我有一个Windows窗体应用程序,可以通过单击按钮向其中添加用户控件。 我还可以通过选择一个控件并单击“删除”按钮,一次删除一个控件。 所有这些都很好,但是如果我添加三个控件并删除第二个控件,那么表单上剩余的两个控件之间就会有一个间隙。我想让所有剩余的控件向上移动以填补空白

像这样:

//添加三个控件,我们就有了:
控制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;
                }
            }
        }
    }
}

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

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

    this.Controls.Add(item);
}

要删除控件,只需处置它!所有剩余控件将向上滑动

也许你想看看flowLayoutPanels?

也许你想看看flowLayoutPanels?谢谢。在FlowLayoutPanel中添加和删除控件使操作更加简单。如果你把你的评论作为回答,我会接受的。