2

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

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

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)

如果我再次调用此函数,它将引发异常,因为文本框不再存在

4

3 回答 3

3

尝试ControlCollection.Remove

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

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

于 2013-04-17T07:48:39.343 回答
1

你可以使用Control.ControlCollection.Clear方法

  groupBox.Controls.Clear()

Control.ControlCollection.RemoveAt方法

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

或者通过使用带有 Remove 方法的 For 循环

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
于 2013-04-17T07:54:50.483 回答
0

您可以简单地选择设计中的组框内容并将它们从 gb 中移开,然后您可以安全地删除它并根据需要移回内容。

于 2019-03-15T14:01:54.593 回答