Form类的KeyPreview属性

  首先需要知道一个知识点,Form控件,Panel控件和GroupBox控件等容器类控件默认是不接收焦点的,而是负责管理容器中控件的焦点。当容器控件被选中时,默认把焦点传送至容器内Tab顺序为0的控件。

  当Form窗体中包含可以接收焦点和键盘事件的控件时,如TextBox,如果KeyPreview属性设置为false(默认值),那么Form类是不响应键盘消息的,消息被直接发送至拥有焦点的控件。如果需要在控件接收键盘事件前对键盘事件(KeyPress,KeyDown,KeyUp)进行处理,便需要将KeyPreview属性设置为true。这时可以重写Form类的OnKeyPress等函数,或者为KeyPress属性添加事件处理函数。

  这里有一个例外情况,就是当Form窗体中不包含可以接收焦点和键盘事件的控件(包括直接包含和通过窗体上其他容器控件包含),那么无论KeyPreview的属性值为true或false,Form类总能够接收到键盘事件。

时间: 2024-10-25 13:23:07

Form类的KeyPreview属性的相关文章

Form.KeyPreview 属性2

在使用.Net Framework编写窗体应用程序的时候,有时有需要响应窗体的按键消息. 当窗体上没有任何其他控件的时候,窗体是可以直接响应这些消息的. 但是当窗体上有其他控件时,会发现窗体再也不会响应这些消息了,因为这些消息都由其上的控件所处理掉并且不再发给父窗体. 但是响应窗体上的按键消息是很有必要的,经一番探索,发现Form类有一个KeyPreview的属性,可以让它接收得到按键消息.它的定义如下: KeyPreview的属性 获取或设置一个值,该值指示在将键事件传递到具有焦点的控件前,窗

Form.KeyPreview 属性

Form.KeyPreview 属性 今天再做KeyDown 和 KeyUp 事件时,就是忘了设置,窗体的KeyPreview 属性,所以KeyDown 和 KeyUp 事件没有反应(这里说明一下,本人使用的是自定义控件,如果是窗体控件就没有问题的.具体原因,下面会有解释.) 获取或设置一个值,该值指示在将键事件传递到具有焦点的控件前,窗体是否将接收此键事件. 命名空间:System.Windows.Forms程序集:System.Windows.Forms(在 system.windows.f

10天学会phpWeChat——第八天:Form类,丰富表单提交的字段类型

通过前面七讲的系列教程,我们完成了一个包含后台并自适应PC+h5移动端的文章管理模块. 在实际的生产环境中,文章投稿.商品上传等操作并不会简单局限于一个text和textarea组成的表单.在实际中,我们可能会用到web富文本编辑器(如ueditor.markdown).图片上传.多图上传.附件上传.地图标注等更加丰富的表单类型. 今天,我们开始<10天学会phpWeChat>的第八讲:Form类,丰富表单提交的字段类型. 一.什么是Form类? Form类是phpWeChat封装好的一个类,

实体类、数据访问类中的属性拓展

类中: using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; namespace 实体类_数据访问类.App_Code { public class Users { SqlConnection conn = null; SqlCommand cmd = null; public Users() { conn = new S

HTML &lt;form&gt; 标签的 method 属性

定义和用法 method 属性规定如何发送表单数据(表单数据发送到 action 属性所规定的页面). 表单数据可以作为 URL 变量(method="get")或者 HTTP post (method="post")的方式来发送. method 属性 浏览器使用 method 属性设置的方法将表单中的数据传送给服务器进行处理.共有两种方法:POST 方法和 GET 方法. 如果采用 POST 方法,浏览器将会按照下面两步来发送数据.首先,浏览器将与 action

final修饰的类,其属性和方法默认是被final修饰的吗?

在论坛上,看到一个问题,当然,各位聪明的客官想必已经知道问题是什么了,嘿嘿,没错就是文章的标题:final修饰的类,其属性和方法默认是被final修饰的吗? 老实说,刚开始看到这个问题的时候,有点懵...(现场捕获懵比一只:),嘻嘻),之前学习的语法什么的,隔了太久忘记了...既然忘记了,就写个程序进行测试下吧 嘻嘻,以下是测试的程序:(小程序中用到了反射机制,还没学习到的客官,可以先去了解下哈:) ) /** * DateAndTime: 2016-12-13下午10:38:08 */ pac

HTML &lt;form&gt; 标签的 method 属性(20161028)

HTML <form> 标签的 method 属性 HTML <form> 标签 实例 在下面的例子中,表单数据将通过 method 属性附加到 URL 上: <form action="form_action.asp" method="get"> <p>First name: <input type="text" name="fname" /></p>

java基础—继承题目:编写一个Animal类,具有属性:种类;具有功能:吃、睡。定义其子类Fish

编写一个Animal类,具有属性:种类:具有功能:吃.睡.定义其子类Fish package zhongqiuzuoye; public class Animal { //属性 private String type; public String getType() { return type; } public void setType(String type) { this.type = type; } //功能 public void eat() { } public void sleep

html5中form表单新增属性以及改良的input标签元素的种类

在HTML5中,表单新增了一些属性,input标签也有了更多的type类型,有些实现了js才能实现的特效,但目前有些浏览器不能全部支持.下面是一些h5在表单和input标签上的一些改动. <!DOCTYPE html><html> <head> <title>表单测试</title> <meta charset="utf-8" /> <!-- 在不支持h5的浏览器中,可以用CSS样式进行改写 --> &