• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

winform程序最小化到托盘后不能正常关机的解决方案

时间:2015年04月02日 15:26:17    来源:魔法猪系统重装大师官网    人气:4422

问题描述:

在最近的windows程序中,由于实现了winform程序点击窗口的关闭按钮,不直接退出程序,而是将程序最小化到托盘中,这样当程序没有退出之前,直接关机会导致关机不能正常进行。

问题原因:

操作系统会在用户点击关机后,发送一个关闭的消息到当前运行的应用程序,这个消息的ID号问0x11,这样当应用程序接受到消息后就会关闭自身,然后操作系统就可正常关闭了。但是我们在实现了上面的功能后,会在FormClosing事件中添加一段代码,

e.Cancel = true;
//最小化到托盘
NormalToMinimized();

  这样我们虽然实现了功能,但是在接受到操作系统发送来的关闭窗口的消息的时候,就不能关闭程序了。

解决方案:

1.在应用程序的主窗口添加一个私有的标识,用来标识,关闭窗口的事件是由用户点击引起的还是由操作系统发送的小心引起的。

 2.在应用程序主窗口中添加对系统消息的处理,这个处理的过程需要重写窗口的窗口过程,也就是窗口处理操作系统消息的方法。

protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x11)
            {
             //自定义的事件触发标识,为true时表示窗口的关闭事件是由操作系统的关机操作引起的。
             isExitAppFalg = true;


            }
            base.WndProc(ref m);
        }

3.修改FormClosing事件的处理过程,添加一个判断就可以了

         if (!isExitAppFalg)
            {
                e.Cancel = true;
                //最小化到托盘
                NormalToMinimized();
            }

这样就把实现功能所带了的副作用给解决了。

winform,程序,最小化,到,托盘,后,不能,正常,
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部