【问题标题】:Removing a control from Windows Form and adjusting other controls to fit从 Windows 窗体中删除控件并调整其他控件以适应
【发布时间】:2011-05-31 15:18:40
【问题描述】:

我有一个 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;
                }
            }
        }
    }
}

【问题讨论】:

  • 也许你想看看 flowLayoutPanels ?
  • 谢谢。在 FlowLayoutPanel 中添加和删除控件使生活变得更加轻松。如果您将您的评论作为答案,我会接受。

标签: c# winforms


【解决方案1】:

也许你想看看 flowLayoutPanels ?

【讨论】:

    【解决方案2】:

    要添加控件,只需这样做:

    public void AddControl(ControlToAdd item)
    {
        item.Dock = DockStyle.Top;
    
        this.Controls.Add(item);
    }
    

    要删除控件,只需 Dispose 即可!所有剩余的控件都会向上滑动!

    【讨论】:

      猜你喜欢
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      相关资源
      最近更新 更多