在Winform中,我有一个groupbox,其中有几个Textbox控件。如果删除组框,则文本框也将被删除。尽管我没有做任何有意为之的事情,但它们还是与Groupbox有联系。
问题-如何删除此连接,以便删除组框并在表单上保留文本框?
最佳答案
子控件具有Parent属性。如果删除其父级,则Windows窗体也会自动在子级上调用Dispose()。这是关闭窗体时不必在子控件上自己显式调用Dispose()的原因之一。
获得所需的东西很容易,使用this.Controls.Add()方法将子级添加到表单中。 WF会自动将它们从组框中删除,因为一个子控件只能有一个父级。一些示例代码:
private void button1_Click(object sender, EventArgs e) {
int nextTab = 0;
foreach (Control ctl in this.Controls) nextTab = Math.Max(nextTab, ctl.TabIndex);
Point offset = groupBox1.Location;
for (int ix = groupBox1.Controls.Count - 1; ix >= 0; --ix) {
Control ctl = groupBox1.Controls[ix];
ctl.Location = new Point(ctl.Left + offset.X, ctl.Top + offset.Y);
ctl.TabIndex += ++nextTab;
this.Controls.Add(ctl);
}
groupBox1.Dispose();
groupBox1 = null;
}