翼度科技»论坛 编程开发 .net 查看内容

C#控制台应用程序如何添加窗口关闭事件?

9

主题

9

帖子

27

积分

新手上路

Rank: 1

积分
27
公司有一个控制台应用程序,在关闭控制台应用程序窗口前,想处理一下业务逻辑。还有比如误操作关闭了,或者像消息队列启动了发送消息提醒,那关闭了窗口代表控制台应用销毁了,也需要发送消息通知。那这个时候添加关闭窗口事件就派上用场了。

很多小伙伴问,有没有办法像WinForm一样,对窗体关闭退出事件进行控制呢?默认是没有的,我们可以自己写。按照下面的步骤来操作吧:

1、在【Program.cs】文件的Program类中写如下代码。 添加一个委托HandlerAppClose,就是把函数的指针传递给系统API函数SetConsoleCtrlHandler。  

代码:
  1.         #region 激活关闭窗口事件
  2.         public delegate bool ControlCtrlDelegate(int CtrlType);
  3.         [DllImport("kernel32.dll")]
  4.         private static extern bool SetConsoleCtrlHandler(ControlCtrlDelegate HandlerAppClose, bool Add);
  5.         private static ControlCtrlDelegate cancelHandler = new ControlCtrlDelegate(HandlerAppClose);
  6.         /// <summary>
  7.         /// 关闭窗口时的事件
  8.         /// </summary>
  9.         /// <param name="CtrlType"></param>
  10.         /// <returns></returns>
  11.         static bool HandlerAppClose(int CtrlType)
  12.         {
  13.             Console.WriteLine("关闭窗口事件被激活");
  14.             Console.WriteLine("do something...");
  15.             return false;
  16.         }
  17.         #endregion
复制代码
2、然后在Program类的Main方法中去注册窗口关闭事件。

代码:
  1. //注册窗口关闭事件
  2. bool bRet = SetConsoleCtrlHandler(cancelHandler, true);
复制代码
3、效果如下,当点击【x】关闭窗口时,就会触发窗口关闭事件了。

会进入到这个事件里面:


原文链接:https://www.cnblogs.com/kimiliucn/p/17616757.html

来源:https://www.cnblogs.com/kimiliucn/archive/2023/08/09/17616757.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具