C#如何关闭一个窗口的同时打开另一个窗口

在.net的WinForm程序中,如果是直接起动的Form作为主窗口,那么这个主窗口是不能关闭的,因为它维护了一个Windows消息循环,
它一旦关闭了就等于声明整个应用程序结束,所以新打开的窗口也就被自动关闭了。因此要关闭的窗口不能用Application.Run创建。
如何使用Hide()(只是隐藏,其实进程还被占用着)之类或者Close()(这个操作会把所有窗体关闭,因为属于同一个线程)是达不到我们需要的效果的。
要在关闭一个窗口的同时打开另一个窗口,可以按如下做法:

先在第一个窗口声明一个公共的bool变量并赋值为true:
如public bool closeflag = true;
在program类里运行第二个窗口,主要代码:

  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  Form1 form1 = new Form1();
  form1.ShowDialog(); //模式窗口,先运行Form1的作用
  if (from1.closeflag == false)
  {
  Application.Run(new Form2());
  }

然后在Form1的关闭的相关控件(如按钮或什么的,就是要关闭这个窗口的控件)  将closeflag赋值为false,并调用this.close();关闭第一个窗口。

时间: 2024-12-29 01:41:40

C#如何关闭一个窗口的同时打开另一个窗口的相关文章

C#关闭一个窗口的同时打开另一个窗口

在.net的WinForm程序中,如果是直接起动的Form作为主窗口,那么这个主窗口是不能关闭的,因为它维护了一个Windows消息循环,它一旦关闭了就等于声明整个应用程序结束,所以新打开的窗口也就被自动关闭了.因此要关闭的窗口不能用Application.Run创建.要在关闭一个窗口的同时打开另一个窗口,可以按如下做法: 先在第一个窗口声明一个公共的bool变量并赋值为true: 如public bool closeflag = true;在program类里运行第二个窗口,主要代码:    

在winform中,关闭窗口时刷新父窗口(原来打开此窗口的窗口)

如何在关闭窗口时刷新父窗口(原来打开此窗口的窗口,不一定是mdi窗口), 这种事情在b/s里很简单,但在winform里却不那么好办.因为你不能关闭第一个窗口时再打开另一个窗口,如果这样的话新窗口就一起被关闭了.但是正因为这样,我们可以让刷新的动作在关闭子窗口时进行,当然所有的动作是在父窗口中进行的.晕,不知道说明白了没有.还是看一下例子吧public partial class Customer : Form    {        public Customer()        {    

【Android开发-8】生命周期,Activity中打开另外一个Activity

前言:生命中有许多人陪伴自己走过一生中的某段旅程,只是有些人只是某阶段出现,有些人却陪伴自己很久.就像小学.中学.高中.大学,那些曾经以为会长久拥有的,当经历过天涯各地地忙碌于生活,或如意,或失意:渐渐地那些画面只剩回忆.天涯各自安命,能在一起的就尽力珍惜吧,不在一起地就衷心地祝福,我们都需要一种姿态生活下去!Android中的Activity的生命中,我们经常需要打开另外一个Activity,即另外一个界面.这个可能出现的时间很短暂,然后又回到主界面.但是这两个Activity都在各自的生命周

C#中关闭第一个Form窗口,打开另一个新窗口方法

很多同学问怎么关闭一个FORM打开另一个新Form.这个问题最多的是在做登录验证时,使用第一个登录窗 登录成功后要关闭自己,然后打开新窗显示.没想到这个问题在.Net还成了问题,不过依然有很多方法解决. 典型的 Form1 f = new Form1(); f.Show(); this.Close(); 最后的关闭时把整个程序都关闭了 1隐藏法,原理就是把旧窗口隐藏掉,再打开新窗口. //新建一个NewForm窗口(NewForm是自己定义的Form) NewForm fm=new NewFor

JavaScript关闭窗口的同时打开新页面的方法

做网页的时候需要弹出一个小窗口,然后要实现一个功能就是鼠标点击超链接关闭小窗口并打开一个新页面,就如同下图: 这是一个小窗口,点击超链接这个窗口会关闭并且会正常在浏览器打开新页面,首先写js关闭窗口的方法 1 <script type="text/javascript"> 2 function closewin(){ 3 //关闭窗口的方法 4 window.opener=null; 5 window.open('','_self',''); 6 window.close(

调试一个Ext打开的window窗口内嵌Iframe的form提交问题

一个奇怪的问题是:潜逃在iframe里的页面单独提交都是正常,放到iframe里面通过js调用在parent页面.提交总是被莫名其妙的杀掉. 确定js简单无错之后,继续看parent的处理逻辑,有这么一句.this.destory(). 问题最后才确定了,是打开iframe的页面本身世打开的window窗口,结果能提交submit执行后,直接关闭了打开的窗口. 结果form没有执行开始就被终结了parent,当然iframe的所有执行也都game over了. 毕竟iframe是异步的执行的,想

右键“在此处打开命令行窗口”的一个小秘密

右键"在此处打开命令行窗口"的一个小秘密 我们都知道windows7开始,提供了一个便于从当前文件夹打开cmd命令行窗口的快捷方式: Shift+鼠标右键==>"在此处打开命令行窗口" 如此,就能快速的在当前目录打开cmd窗口,以执行命令. 今天,在配置ant的环境变量时,添加了ant的bin目录到path变量中后,使用上述方式打开了想要build的工程的目录,输入ant命令,一直提示: 'ant' 不是内部或外部命令,也不是可运行的程序或批处理文件. 这就奇

C#点击按钮关闭当前窗体 打开另一个窗体。

网上有很多是隐藏当前窗体,但是这样占用资源,效果不好,因此改进方法如下: private void button1_Click(object sender,EventArgs e) { this.hide(); Form1 form=new Form1(); form.ShowDialog(); this.Dispose();//释放所有资源 } C#点击按钮关闭当前窗体 打开另一个窗体.

Android系统移植与调试之-------&gt;增加一个双击物理按键打开和关闭闪光灯并将闪光灯状态同步到下拉菜单中

最近有一个客户有这样的需求: 1.在[设置]--->[无障碍]中添加一个开关按钮. 如果打开开关的话,双击某个物理按键的时候,打开闪光灯,再双击该物理按键的时候,关闭闪光灯. 如果关闭开关的话,双击该物理按键的时候,不做任何处理. 2.打开关闭闪光灯的状态,在下拉菜单中也要同步. 如下图所示的效果: 当打开上面添加的开关后,如果双击POC键(POC键是我们公司自定义的一个物理按键)的时候,就打开闪光灯,并将下拉菜单中的闪光灯图标点亮,如下图所示 如果再次双击POC键(POC键是我们公司自定义的一