C# Winform项目,如何实现在当前窗体中关闭其它已经启动的form窗体实例。

sxl_88 2015-03-19 08:44:57

在C# Winform项目中,有四个窗体(form1,form2,form3,form4),在form1窗体中有两个button1、button2按钮控件 (button1用于显示form2窗体,button2用于显示form3窗体),
在用户已经点击了两个button控件后分别启动显示了form2,form3窗体。

目前在form4窗体有一个关闭button按钮,请问如何实现在form4窗体中点击关闭按钮,关闭已经启动的form2,form3窗体。

注:目前的困惑是在form4窗体中无法获取已经启动显示的form2,form3窗体的实例,请问在form4窗体中如何获取form2,form3窗体的实例进行关闭。
请各位帮忙提供下相关资料,谢谢。
...全文
360 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
埃伯先森 2015-03-20
  • 打赏
  • 举报
回复
引用 8 楼 Z65443344 的回复:
[quote=引用 7 楼 l751870217 的回复:] [quote=引用 6 楼 Z65443344 的回复:] 如果你能确保这个窗体只会打开一次,而不会多次打开,导致你的全局变量指向了最新的那个窗体,而之前的窗体没有句柄了 那么也可以
哇塞,大神说话果然还是没一次性看懂。。。。[/quote] 比如一个简单的代码如下 Form2 fm=new Form2(); fm.Show(); fm=new Form2(); fm.Show(); 即使你把fm这个变量public出来了,等你执行fm.Close()的时候,也只会关闭你后来打开的那个Form2,而之前打开的,没有保留句柄,不遍历窗体而只去访问变量,你找不到它的[/quote] 恩恩。晓得了。不过说实话,C#都是直接拖拽的,面向对象中,对这些术语的理解真的不到位。
於黾 2015-03-20
  • 打赏
  • 举报
回复
引用 7 楼 l751870217 的回复:
[quote=引用 6 楼 Z65443344 的回复:] 如果你能确保这个窗体只会打开一次,而不会多次打开,导致你的全局变量指向了最新的那个窗体,而之前的窗体没有句柄了 那么也可以
哇塞,大神说话果然还是没一次性看懂。。。。[/quote] 比如一个简单的代码如下 Form2 fm=new Form2(); fm.Show(); fm=new Form2(); fm.Show(); 即使你把fm这个变量public出来了,等你执行fm.Close()的时候,也只会关闭你后来打开的那个Form2,而之前打开的,没有保留句柄,不遍历窗体而只去访问变量,你找不到它的
埃伯先森 2015-03-20
  • 打赏
  • 举报
回复
引用 6 楼 Z65443344 的回复:
如果你能确保这个窗体只会打开一次,而不会多次打开,导致你的全局变量指向了最新的那个窗体,而之前的窗体没有句柄了 那么也可以
哇塞,大神说话果然还是没一次性看懂。。。。
於黾 2015-03-20
  • 打赏
  • 举报
回复
如果你能确保这个窗体只会打开一次,而不会多次打开,导致你的全局变量指向了最新的那个窗体,而之前的窗体没有句柄了 那么也可以
sxl_88 2015-03-20
  • 打赏
  • 举报
回复
可以定义一个全局Form窗体的变量,用于存放Form2、Form3窗体对象。 然后在form4中调用这个全局Form窗体的变量来获取Form2、Form3窗体对象。这样也可以吗?
雪狼孤竹 2015-03-20
  • 打赏
  • 举报
回复
3# 正解
exception92 2015-03-20
  • 打赏
  • 举报
回复
给段代码,

  foreach (Form frm in Application.OpenForms) {
                if (frm.Name == "Form1")
                {
                    frm.Close();
                }
            }
结贴吧
bdmh 2015-03-20
  • 打赏
  • 举报
回复
可以把你要关闭的窗体放到一个公共的List中,你访问这个List,遍历关闭
db_qzy 2015-03-19
  • 打赏
  • 举报
回复
定义一个公共类,用于存储Form2、Form3的窗体对象(在你创建对象的地方传值),在Form4使用公共类中的对象关闭两个窗体。

110,530

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧