C# 窗口事件

一 窗口事件

当窗口创建时,以下事件依次发生:
Load->Activated->->Shown;
当窗口关闭时,以下事件依次发生:
FormClosing->FormClosed->Deactivate;
其中,Closed/Closing已经过时(obsolete);

二 消息循环

消息循环 Message Loop;
应用程序Application;

启动消息循环:Applicaton.Run(form);

消息循环是一个循环,所以Run()方法会一直运行。不会返回,消息循环终止。

Application.ExitThread()退出当前消息循环;
Application.Exit(); 退出所有消息循环;

消息循环上的所有窗体会被关闭;
Application.Run()返回。

主窗口,MainForm
Application.Run(form)

当运行主窗口时,自动添加一个Closed事件处理,在窗口关闭时,调用Application.ExitThread()来退出消息循环。

三 应用的退出

如何退出应用程序?
比较以下的方法:
Form.Hide()隐藏主窗口;
Form.Close()关闭主窗口;
Application.Exit()/ExitThread()退出消息循环;
System.Environment.Exit()强行退出整个进程;
Form.Hide()隐藏主窗口;
显然,主窗口隐藏时,应用并没有退出;

提示:打开任务管理器,切换到详细信息,根据名字找到相应的进程。点"线程任务"。

1 Form.Close()

Form.Close()关闭主窗口
① 当主窗口关闭时;
② Form.Closed事件触发;
③ Application。ExitThread(),退出当前消息循环;
④ 当前的界面线程随之退出;

界面线程退出,进程就结束?No,No,NO!

2 Application.ExitThread()

显示调用:Application.ExitThread()
① 退出当前消息循环;
② 当前的界面线程随之退出;

同样地,界面线程退出时,进程不一定结束。只有所有的前台线程都结束时,进程才会结束。

System.Environment.Exit(0)
强行退出进程,不管当前有什么线程,直接终止。可能导致不完整的状态和数据,不推荐调用。

四 窗口切换

1 在Main()中,启动登录界面

Application.Run(new LoginForm())

2 点击登录时,关闭登录界面,进入业务界面

问题在于,当LoginForm关闭时,界面线程也会退出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值