我有两个表单,当Form1
个负载时,它显示Form2
:
Form frm = new Form2();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
frm.Show();
}
Form1
有一个按钮,可以在Form2
上动态创建10个按钮.
private void btnCreateButtons_Click(object sender, EventArgs e)
{
for (int t=0;t<10;t++)
{
Button button = new Button();
button.Text = "Button " + t.ToString();
button.Location = new Point(10, (10+(button.Height*t)));
frm.Controls.Add(button);
}
}
这里是点击一次[创建按钮]后的两个表格.
然后,目标是当在Form1
上单击[Dispose]按钮时,它将正确地删除并处理在第一步中创建的Form2
上的所有按钮.但我有一个问题,销毁动态对象创建.
private void btnDisposeAll_Click(object sender, EventArgs e)
{
foreach(Control control in frm.Controls)
{
if (control != null)
{
this.Controls.Remove(control);
control.Dispose();
}
}
}
当我想销毁这个动态按钮时,Dispose方法不能正常工作.只有Form2
个动态按钮中的一些会消失.
我的代码出了什么问题? 谢谢