zhu_zy123
2020-09-23 15:28
采纳率: 87.5%
浏览 210

C#如何关闭或者关闭指定的窗体画面(这些窗体全部由动态的形式添加)

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();
        ......
    }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • blownewbee 2020-09-23 15:37
    已采纳

    所有打开的窗口都在Application.OpenForms集合
    所以可以用
    for each (Form f in Application.OpenForms)
    {
    if (f is Form1) f.Close(); //比如说要关闭 Form1
    }
    至于打开窗体
    Form2 f2 = new Form2();
    f2.Show();

    点赞 评论
  • Aet_Leng 2020-09-23 15:54

    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();

    点赞 评论

相关推荐 更多相似问题