禁用Alt + F4关闭窗体的一些常用方法
我在“多线程:C#.NET中使用BackgroundWorker在模态对话框中显示进度条”一文中介绍了如何创造一个能实时显示程序处理进度的对话框,为了让该对话框看起来更加逼真,除了要将窗体的的FormBorderStyle属性设为FixedDialog,将MaximizeBox和MinimizeBox设为false,将ControlBox设为false外,还需要屏蔽Alt + F4组合键以防止用户关闭对话框。屏蔽Alt + F4的方法有很多,这里列出了一个比较简单而奏效的方法。
1. 捕获窗体的KeyDown事件
给窗体添加KeyDown事件,然后加入下面的代码:
2 {
3 if (e.KeyCode == Keys.F4 && e.Modifiers == Keys.Alt)
4 {
5 e.Handled = true;
6 }
7 }
代码中判断当前用户是否按下了Alt + F4组合键,如果是则执行e.Handled = true用于指示事件已经被成功执行,从而屏蔽了系统的Alt + F4功能。
2. 改写窗体的Closing事件
给窗体添加Closing事件,然后加入下面的代码:
2 {
3 e.Cancel = true;
4 }
当窗体被关闭时(用户点击窗体右上角的关闭按钮或通过程序调用窗体的Close()方法)关闭动作会被取消,那么如何才能通过程序来关闭窗体呢?可以在关闭窗体的代码前去掉窗体的Closing事件,如:
2 this.Close();
当然,你也可以选择不关闭窗体而只是隐藏它,这样该窗体不会在内存中被注销。上面两行代码只能在窗体内部运行,如果你想实现在父窗体中通过程序关闭子窗体,可以在子窗体中添加一个public类型的方法,将上面两行代码加入到方法中,然后在父窗体中调用子窗体的这个方法。如:
主窗体:
2 frm.CloseWindow();
子窗体:
2 {
3 e.Cancel = true;
4 }
5
6 public void CloseWindow()
7 {
8 this.FormClosing -= new FormClosingEventHandler(this.Form2_FormClosing);
9 this.Close();
10 }
3. 调用COM组建或全局钩子
这类方法需要借助于第三方的代码来实现,过程稍微复杂一些,不太推荐使用,可考虑在一些比较特殊的场合使用。这里有两个例子可供参考:
http://zhidao.baidu.com/question/54482219
http://www.cnblogs.com/hbz253638398/archive/2008/05/30/1210971.html
本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/archive/2011/05/17/2049083.html,如需转载请自行联系原作者
禁用Alt + F4关闭窗体的一些常用方法相关推荐
- 能够关闭并退出计算机程序的是,电脑强制关闭程序按哪三个键 可按Alt+F4关闭当前页面...
导读:说到程序,大多数人都知道,有人问电脑突然死机强制关机打不开,还有朋友想问电脑强制关闭程序按哪三个键,这到底是咋回事?事实上电脑qq怎么强制关闭呢,今天小编给大家整理了电脑强制关闭程序按哪三个键, ...
- 计算机关闭窗口可以使用alt,禁止使用Alt+F4关闭窗口完整代码
声明: Private Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (B ...
- 【Qt】按键事件:Alt+F4
1.问题描述 在嵌入系统上,运行Qt程序,使用Alt+F4关闭时,这个常用的组合快捷键失效. 2.解决方法 在Qt程序中,添加Alt+F4组合按键事件,代码如下: void MainWindow::k ...
- winform屏蔽Alt+F4组合键以防止用户关闭对话框
winform屏蔽Alt+F4组合键以防止用户关闭对话框,屏蔽Alt + F4的方法有很多,这里列出了一个比较简单而奏效的方法. 1. 捕获窗体的KeyDown事件 给窗体添加KeyDown事件,然后 ...
- C#挂机锁(禁用任务管理器,禁用windows键和组合键alt+f4等等)
话不多说,直接上菜! using System; using System.Collections.Generic; using System.ComponentModel; using System ...
- VB怎样屏蔽 Alt+F4键
怎样屏蔽 Alt+F4键 以下代码在模块------------ 程序代码: 'http://baidu.bhdata.com '石陆软件屋 Public Declare Sub mouse_even ...
- FineUI小技巧(4)关闭窗体那些事
前言 FineUI中的Window控件常用作选择.新增或编辑内容.而关闭Window控件却有很多技巧,了解这些技巧有助于项目的快速开发. 如何关闭Window控件 第一个问题就是如何关闭Window控 ...
- 屏蔽 Alt+F4 和 Escape 键
近日写个程序,后台线程执行时需要显示个进度窗口,而这个窗口我又不希望用户自己关闭,所以想办法要屏蔽 Alt+F4 和 Escape 这两个消息. 一般情况下,马上想到的就是处理 WM_KEYDOWN ...
- Qt 屏蔽Alt + F4 组合键
Qt 屏蔽Alt + F4 组合键 2017年11月16日 10:10:29 linuxwuj 阅读数 2006更多 分类专栏: qt 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版 ...
最新文章
- [Z]应试生涯结束后,美国亚裔的那群超优生都过得如何?来源: 李璐瑶的日志...
- js获取本周、本月、本季、本年的第一天
- ExtAspNet v3.1.1
- 一篇特别长的总结(C专家编程)
- 配置多个git账号_docker随手笔记第七节 jenkins通过git部署java微服务插件安装
- mysql geocode_百度地图Geocoding API获取特定地区或地址的经纬度信息,然后在MySql数据库多表循环遍历更新...
- 为什么python删除不了_为什么python的imp.reload()不会删除旧的类和函数?
- Apprenda发布Kubernetes商业版,PaaS、CaaS任君选择
- 软件开发:到底谁还在传言软件巨头濒临死亡?
- matlab2c使用c++实现matlab函数系列教程-flipud函数
- Atitit io读取文件法 目录 1. 文件法	1 1.1. 异步读取文件:	1 1.2. 2.同步读取方法	1 1.3. 二进制读文件:	1 2. 读取api规范	1 3. Atitit 按照
- 可视化网络监控软件OpManager获选″IT运维产品之星”
- 助推建筑业数字化转型升级,紫光云再出招
- python中的while语句
- STM32CUBEIDE(15)----移植兆易创新SPI Nor Flash之GD25Q64Flash
- thinkphp6项目的支付宝手机网页支付接入
- GSM模块_常用AT指令详解
- 广东高中生多少人_2020年广东高考报名人数统计有多少人
- 电商交易之订单中心设计(一)
- 2018春招实习笔试面试总结(PHP)
热门文章
- java 打印hashmap值_HashMap中输出key-value值得方法
- python pdb调试快捷键_python pdb调试以及sublime3快捷键设置
- machinery入门看这一篇(异步任务队列)
- 项目添加universal link跳转,升级微信SDK
- ob_get_contents()函数的用法
- SpringMVC从Controller跳转到另一个Controller
- 系统设计面试的答题思维框架
- 客户端能不等四次挥手就强制关闭 TCP 连接吗?
- Go语言操作MySQL的基础知识
- 《Go语言程序设计》读书笔记(二)函数