清除Winforms GroupBox而不破坏内容

时间:2013-04-17 07:42:38

标签: c# winforms ironpython groupbox

我想清除GroupBox的内容以用新选项填充它,但我不能使用Dispose()函数,因为我不想销毁其中的对象(来自另一个类的Textboxes)。 有没有办法在不破坏内容的情况下清空GroupBox?

编辑:由于很难理解我想要什么,这就是我试图做的(这是IronPython btw,但这不应该是一个问题)

def loadMethod(self, sender, e):
    self.MethodParaBox.Visible = True
    for i in self.MethodParaBox.Controls:
        self.MethodParaBox.Controls[0].Dispose()

    panel = Panel()
    panel.AutoScroll = True
    panel.Width = 150
    panel.Height = 130
    panel.Left = 25
    panel.Top = 25
    self.MethodParaBox.Controls.Add(panel)

    for i, z in enumerate(self.parent.getParameter(self.project.SelectedItem, self.design.SelectedItem)):
        if self.textBoxList[i].value.Enabled == False:
            label = Label()
            label.Left = 0
            label.Top = 30 * i
            label.Width = 80
            label.Text = z
            panel.Controls.Add(label)

            self.textBoxList[i].option3.Left = 90
            self.textBoxList[i].option3.Top = 0 + 30 * i
            self.textBoxList[i].option3.Width = 40
            panel.Controls.Add(self.textBoxList[i].option3)

如果我第二次调用此函数,它将抛出异常,因为文本框不再存在

3 个答案:

答案 0 :(得分:2)

尝试ControlCollection.Remove

foreach(Control c in groupBox.Controls()) groupBox.Controls.Remove(c);

或者您可以使用groupBox.Controls.Clear()

答案 1 :(得分:1)

您可以使用Control.ControlCollection.Clear Method

  groupBox.Controls.Clear()

Control.ControlCollection.RemoveAt Method

While groupBox.Controls.Count > 0
    groupBox.Controls.RemoveAt(0)
End While

或者使用For loop with Remove method

For i As Integer = (groupBox.Controls.Count - 1) To 0 Step -1
  Dim ctrl As Control = groupBox.Controls(i)
  groupBox.Controls.Remove(ctrl)
  ctrl.Dispose()
Next i

答案 2 :(得分:0)

您只需在设计中选择分组框内容,然后将其从gb中移开,然后就可以安全地删除它,并根据需要移回内容。