MainForm关闭之后保持程序运行

转载 2004年09月15日 11:41:00
MainForm关闭之后保持程序运行

作者:罗会涛

WinForm程序一般都是从一个Form的static void Main()开始运行,暂且称此Form为MainForm。Main函数的一般写法是:

static void Main()
{
  Application.Run(new Form1());
}

这样的写法有一个问题:如果需要从Form1中调出另一个Form,必须保持Form1不能关闭,比如在一个Button的Click中调出Form2:

private void button1_Click(object sender, System.EventArgs e)
{
  (new Form2()).Show();
}

可以看到两个Form同时显示在屏幕上,如果改成:

private void button1_Click(object sender, System.EventArgs e)
{
  (new Form2()).Show();
  this.Close();
}

那么执行到this.Close()时,整个应用程序将终止运行,Form2也会自动关闭。

如果需要仅仅显示Form2,除了将Form1.Close改为Form1.Hide之外,还有一种办法,就是将Main改为:

static void Main()
{
  (new Form1()).Show();
  Application.Run(); // 启动独立的应用程序线程
}

这样Form1中的this.Close()就不会导致应用程序终止运行了,而且不需要Form1时,可以真正Close从而释放一些资源。不过,应用程序的终止就不要在其他地方控制了,比如在Form2的Closed事件中:

private void Form2_Closed(object sender, System.EventArgs e)
{
  Application.Exit();
}

在多文档应用程序中,往往需要在内部维护一个当前活动Form的列表,最后一个Form关闭时,再调用Application.Exit。

MainForm关闭之后保持程序运行

MainForm关闭之后保持程序运行 作者:罗会涛 WinForm程序一般都是从一个Form的static void Main()开始运行,暂且称此Form为MainForm。Main函数的一般写法是...
  • qiaov
  • qiaov
  • 2004年10月20日 16:59
  • 860

解决:linux 下关闭连接后保持程序执行

需求描述:我想让 aria2 在我关闭 ssh 连接后继续下载。 方法一:nohup {{ aria2 下载命令}} & 方法二:screnn 工具 方法三: jobs 查看后台作业编号 bg ...
  • landstream
  • landstream
  • 2017年04月13日 10:44
  • 320

C#重载关闭按钮

老是记不住override关键字。。因此也就不会重载函数。。。 记个例子。。。 C#窗体关闭事件的重载是什么呢?我们在实际操作中是如何实现的呢?   我们会在编程的过程...
  • liuyuehui110
  • liuyuehui110
  • 2010年09月30日 19:20
  • 4324

C++ IDE 运行程序时,程序运行结束窗口自动关闭的问题

C程序还是C++程序都先include头文件stdlib.h,再在程序执行结束之前加入代码 system(“pause”);...
  • u013785951
  • u013785951
  • 2015年04月17日 14:50
  • 452

、首先,我们添加一个主界面窗体,命名为MainForm,该窗体IsMdiContainer设置为True,也就是设置为多文档窗体格式。拖拉布局控件"WeifenLuo.WinFormsUI.Docking.DockPanel"到主窗体MainForm中,并

、首先,我们添加一个主界面窗体,命名为MainForm,该窗体IsMdiContainer设置为True,也就是设置为多文档窗体格式。拖拉布局控件"WeifenLuo.WinFormsUI.Docki...
  • csdsuper
  • csdsuper
  • 2010年06月09日 18:07
  • 8328

呼叫保持取消

基本概念 呼叫保持取消,当需要和正在处于呼叫保持状态的用户回复原来通话时,再继续与原来的通话方通话,即取消原来通话的保持状态,停止播放背景音乐。 呼叫保持取消流程图 呼叫保持取消信令简要概述 ...
  • wh8_2011
  • wh8_2011
  • 2015年07月18日 09:19
  • 1684

opencv:程序运行完保持dos窗口不关闭

在训练完人脸检测分类器后,需要查看程序运行时间,这就需要在vs中保持dos运行窗口不关闭。 (1)在main函数最后加上 system("pause");  (2)利用cvWaitKey()函数;...
  • ding977921830
  • ding977921830
  • 2015年10月26日 14:22
  • 1059

Github上fork之后如何保持同步(Windows环境)

我们会去fork别人的一个项目,这就在自己的Github上生成了一个与原作者项目互不影响的副本,自己可以将自己Github上的这个项目再clone到本地进行修改,修改后再push,只有自己Github...
  • BlueCloudMatrix
  • BlueCloudMatrix
  • 2014年11月16日 21:20
  • 5315

MainForm

unit MainForm;  interface  uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls...
  • kingup
  • kingup
  • 2011年01月24日 10:29
  • 327

ssh关闭后仍保持当前运行的进程

ssh关闭后仍保持当前运行的进程   症状:使用SecureCRT工具ssh远程连接linux,不退出ssh,而是强行关闭终端(合上笔记本走人)情况下,后台启动的应用也会关闭。 测试...
  • zzllabcd
  • zzllabcd
  • 2015年10月28日 22:11
  • 2605
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MainForm关闭之后保持程序运行
举报原因:
原因补充:

(最多只允许输入30个字)