在Winform中,我有一个groupbox,其中有几个Textbox控件.如果我删除了Groupbox,文本框也会被删除.它们在某种程度上与Groupbox有关,虽然我没有做任何明知的事情.问题 - 如何删除此连接,以便我可以删除组框并且仍然在表单上有文本框?
子控件具有Parent属性.如果删除其父级,Windows窗体也会自动调用子级上的Dispose().这是您在关闭表单时永远不必在子控件上显式调用Dispose()的原因之一.
获得所需内容非常简单,使用this.Controls.Add()方法将子项添加到表单中.WF会自动将它们从组框中删除,因为子控件只能有一个Parent.一些示例代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
在Designer.cs文件中,您将拥有一系列代码,例如:
this.groupBox1.Controls.Add(this.textBox2);
this.groupBox1.Controls.Add(this.textBox1);
Run Code Online (Sandbox Code Playgroud)
改变他们说:
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
Run Code Online (Sandbox Code Playgroud)
这将使他们的容器成为表单而不是组框,然后您可以删除组框.然而,这将移动文本框,因为它们的Position值相对于其容器是Groupbox.
| 归档时间: |
|
| 查看次数: |
4090 次 |
| 最近记录: |