永发信息网

C#打开新窗体关闭旧窗体

答案:6  悬赏:60  手机版
解决时间 2021-03-05 07:38
  • 提问者网友:几叶到寒
  • 2021-03-04 07:43
我编了个程序,有很多窗体的(最少10个),想打开其他窗体的时候把旧的关了,最后只有一个主窗体和一个子窗体的效果!如何实现??
例如我主窗体是Form1,子窗体有Form2、From3、From4,
在Form1里面有3个按钮,依次可以打开Form2、Form3、Form4,
Form2 newfrm = new Form2();
newfrm.Show();
现在我想把在已打开Form1和Form2的情况下打开Form3,但要关闭Form2。
请问怎么实现这个效果????穷人,现在只有24分!高手帮帮我!!
最佳答案
  • 五星知识达人网友:污到你湿
  • 2021-03-04 09:02
foreach (Form f in Application.OpenForms)
{
if (!(f is Form1) && !(f is Form3))
{
f.Close();
}
}
遍历所以打开的窗体,只要不是Form1和Form3,统统关闭
全部回答
  • 1楼网友:骨子里都是戏
  • 2021-03-04 12:29
你可以在Form3窗体里实例化Form2,进行然后关闭
  • 2楼网友:不想翻身的咸鱼
  • 2021-03-04 12:21
打开的时候使用this.Close() 如果要只能打开一个的话要使用单例模式
  • 3楼网友:街头电车
  • 2021-03-04 11:18
如果是从programs中生成的主窗体,主窗体不能关闭,因为那样会退出程序,可以使用我这个方法,在主窗体的form_closed事件中添加如下代码: this.hide(); 将主窗体隐藏来实现关闭; 再次打开时,使用主窗体的变量来打开: frmmain.show(); 当然要在子窗体中定义主窗体的变量: frmmain frmmain; 如果主窗体没有打开时想要关闭子窗体,在子窗体的form_closed事件中使用如下代码: application.exit(); //这样会退出整个程序,而不只是关闭子窗体
  • 4楼网友:大漠
  • 2021-03-04 10:05
foreach (Form froms in this.MdiChildren) { //获取MID里的所有子窗体 if (froms is Form2) { //判断是否有Form2 froms.Close();//关闭 return;//退出过程 } }
  • 5楼网友:躲不过心动
  • 2021-03-04 09:34
你既然用事件驱动,直接在Button的Click事件最后就是Show出新Form之后把原来的给Close掉不就完了,遍历所有子窗体,有这个必要吗? Form3 form3 = new Form3(); form3.Show(); this.Close();
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯