C#如何关闭或者关闭指定的窗体画面(这些窗体全部由动态的形式添加)
1.要求:
在主窗口上面动态创建N个按钮,每点击其中一个按钮,创建子窗口(子画面可以同时存在)
2.我的思路:
系统一启动,用for语句动态创建N个按钮,同时绑定下面的Click事件。
3.遇到的问题点:
虽然这样就能实现每点击一个按钮能创建子画面,但是关闭对应的窗口就遇到问题,关不掉想要关掉的窗体(例如:主画面上有A,B,C 3个按钮,依次点击A,B,A按钮,希望达到重复点击同一个按钮是关掉原来的那个画面,再重新创建一个新画面, 但是失败了,求想法,思路或者代码???????)
4.相关代码
private void button_Click(object sender, EventArgs e)
{
.......
this.form2 = new Form2(List list); //传入需要在子画面中显示的内容
this.form2.Show();
......
}
所有打开的窗口都在Application.OpenForms集合
所以可以用
for each (Form f in Application.OpenForms)
{
if (f is Form1) f.Close(); //比如说要关闭 Form1
}
至于打开窗体
Form2 f2 = new Form2();
f2.Show();
Dictionary a =```
if(a.ContainsKey(((Button)sender).Name))
a[((Button)sender).Name].Close();
else
a.Add(((Button)sender).Name,new Form2(list));
a[((Button)sender).Name].Show();