如何让Form窗体接收KeyDown事件?
在使用.Net Framework编写窗体应用程序的时候,有时有需要响应窗体的按键消息。当窗体上没有任何其他控件的时候,窗体是可以直接响应这些消息的。
但是当窗体上有其他控件时,会发现窗体再也不会响应这些消息了,因为这些消息都由其上的控件所处理掉并且不再发给父窗体。
响应窗体上的按键消息是很有必要的。Form类有一个KeyPreview的属性,可以让它接收得到按键消息。
该值指示在将键事件传递到具有焦点的控件前,窗体是否将接收此键事件。如果窗体将接收所有键事件,则为true;如果窗体上当前选定控件接收键事件,则为false。默认为alse。
当此属性设置为true 时,窗体将接收所有KeyPress、KeyDown 和 KeyUp 事件。在窗体的事件处理程序处理完该击键后,然后将该击键分配给具有焦点的控件。例如,如果KeyPreview 属性设置为true,而且当前选定的控件是TextBox,则在窗体的事件处理程序处理了击键后,TextBox 控件将接收所按的键。要仅在窗体级别处理键盘事件并且不允许控件接收键盘事件,请将窗体的KeyPress 事件处理程序中的KeyPressEventArgs.Handled 属性设置为 true。
可以使用此属性处理应用程序中的大部分击键事件,并可以处理击键事件或调用适当的控件来处理击键事件。例如,当应用程序使用功能键时,可能希望在窗体级别处理这些击键,而不是为可能接收击键事件的每个控件编写代码。
注意,如果窗体没有可见或启用的控件,则该窗体自动接收所有键盘事件。
如何让Form窗体接收KeyDown事件?的更多相关文章
- C#窗体无法接受Keydown事件
问题一描述:当新建一个窗体时,添加KeyDown事件后,会正常处理,但是当添加有控件时,比如Button,TextBox,不会触发窗体的KeyDown事件,也没有调用KeyDown事件的处理程序. 原 ...
- 转C#窗体无法接受Keydown事件
问题一描述:当新建一个窗体时,添加KeyDown事件后,会正常处理,但是当添加有控件时,比如Button,TextBox,不会触发窗体的KeyDown事件,也没有调用KeyDown事件的处理程序. 原 ...
- paip.gui控件form窗体的原理实现以及easyui的新建以及编辑实现
paip.gui控件form窗体的原理实现以及easyui的新建以及编辑实现 //////新建 与编辑 var EditForm=new Form_easyui(); if(row) ...
- 利用Keydown事件阻止用户输入
先了解下各事件的区别 keydown:在控件有焦点的情况下按下键时发生 keypress:在控件有焦点的情况下按下键时发生 keyup: 在控件有焦点的情况下释放键时发生 意义 keypress主 ...
- Windows 窗体中的事件顺序(WinForm)
引用MSDN,以便以后查看 引用:https://msdn.microsoft.com/zh-cn/library/86faxx0d.aspx 应用程序启动和关闭事件 Form 和 Control ...
- WPF UserControl响应窗体的PreviewKeyDown事件
目的 在UserControl页面实现通过快捷键打开新建窗口 实现过程 监听Window窗体的PreviewKeyDown 其实,使用KeyDown事件也是可以的 页面代码 <Window x: ...
- Windows 窗体中的事件顺序
来自:https://docs.microsoft.com/zh-cn/dotnet/framework/winforms/order-of-events-in-windows-forms 对于依次处 ...
- WinForm中如何实现在容器控件中嵌入form窗体(panel与子窗体)
今天在做项目时候遇到一个问题,窗体分为左右两部分,要求在左边栏点击按钮时,右边动态加载窗体最后想到用panel实现,经历几次失败,并查找资料后,终于搞定 说明:如果多次切换需加入 panel.clea ...
- VB.NET中Form窗体运行时,按F1进入全屏状态
1.在KeyDown事件中添加: If e.KeyValue = 112 Then Me.WindowState = FormWindowState.Maximized End If 注:1.其中11 ...
随机推荐
- ibats注意
<isNotEqual property="id" compareValue="0" prepend="and">id=#id# ...
- Oracle序列使用:建立、删除
转自:http://www.cnblogs.com/WangPB/archive/2010/07/13/1776766.html 在开始讲解Oracle序列使用方法之前,先加一点关于Oracle cl ...
- Elasticsearch安装和使用
Elasticsearch安装和使用 Elasticsearch 是开源搜索平台的新成员,实时数据分析的神器,发展迅猛,基于 Lucene.RESTful.分布式.面向云计算设计.实时搜索.全文搜索. ...
- mongodb基本语句使用
mongodb学习:##mongodb基础##数据库常用命令##用户相关##修改.添加.删除集合数据##条件操作符##创建表 ------------------------------------- ...
- 剑指offer系列52---约瑟夫环问题
[题目]0,1,...n排成一个圈,从0开始每次删除第m个数,求圆圈最后个数. * [思路]1 用数组模拟圆圈.当数到最后一个数即index==n时,令index==0 重头开始遍历: * 当遇到已经 ...
- form 转json,将form表单中的数据序列化数组后转换为Json
页面中引用了jquery,第一想到的就是序列化,但是序列化后的表单字段为a=1&b=2这种. 这里写一个jquery的扩展方法 $.fn.serializeObject = function( ...
- 拿nodejs快速搭建简单Oauth认证和restful API server攻略
拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...
- 【maven】将jar安装到maven本地仓库
Maven 安装 JAR 包的命令是: mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的ar ...
- Android:单元测试Junit的配置
在实际开发中,开发android软件的过程需要不断地进行测试.而使用Junit测试框架,侧是正规Android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性.... ...
- 学习WordPress必须知道的函数(转)
WordPress是目前十分流行的独立博客程序,因傻瓜化安装和使用,其在网民中的应用已近乎普及.但也因为很多新入门的用户几乎对WordPress 程序没有任何了解,造成使用中碰到问题无法解决,求助也十 ...