2011-05-31 44 views
2

我有一个Windows窗体应用程序,可以通过单击按钮添加用户控件。 我也可以通过选择一个控件并单击删除按钮来删除一个控件。 所有这些工作正常,但如果我添加三个控件并删除第二个窗体上剩下的两个控件之间有一个间隙。我希望剩下的所有控制措施都能够填补空白。从Windows窗体中删除控件并调整其他控件以适合

像这样:

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

//删除控制2,我们现在有这样的:
控制1

Control3

//我什么ULD想是这样的:
控制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; 
       } 
      } 
     } 
    } 
} 
+4

也许你想看看flowLayoutPanels? – DarkSquirrel42 2011-05-31 15:21:43

+0

谢谢。在FlowLayoutPanel中添加和删除控件使生活变得更加简单。如果你把你的评论作为答案,我会接受。 – etoisarobot 2011-05-31 15:36:16

回答

0

要添加控件只是这样做:

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

    this.Controls.Add(item); 
} 

删除控件只是Dispose它!所有其他控件将滑动!