粘贴一点有用的东西留存-- Control 类的事件顺序
2009-06-11 22:27
267 查看
用户交互操作最好描述为控件创建和响应的各种事件。一些比较常见的事件有Click、DoubleClick、KeyDown、KeyPress、Validating和Paint。
鼠标事件Click、DoubleClick、MouseDown、MouseUp、MouseEnter、MouseLeave和 MouseHover处理鼠标和控件的交互操作。如果处理Click和DoubleClick事件,每次捕获一个DoubleClick事件时,也会引发 Click事件。如果处理不正确,就会出现我们不希望的结果。Click和DoubleClick事件都把EventArgs作为其参数,而 MouseDown和MouseUp事件把MouseEventArgs作为其参数。MouseEventArgs包含几个有用的信息,例如单击的按钮、 按钮被单击的次数、鼠标轮制动器(鼠标轮上的凹槽)的数目和鼠标的当前XY坐标。如果可以访问这些信息,就必须处理MouseDown或MouseUp事 件,而不是Click或DoubleClick事件。
键盘事件的工作方式与此类似:需要一些信息来确定处理什么事件。对于简单的情况,KeyPress事件接收一个 KeyPressEventArgs,它包含表示被按键的字符值KeyChar。Handled属性用于确定事件是否已处理。把Handled属性设置为 true,事件就不会由操作系统进行默认处理。如果需要被按的键的更多信息,则处理KeyDown或KeyUp事件会比较合适。它们都接收 KeyEventArgs。KeyEventArgs中的属性包括Ctrl、Alt或Shift键是否被按下。KeyCode属性返回一个Keys枚举 值,表示被按下的键。与KeyPressEventArgs.KeyChar不同,KeyCode属性指定键盘上的每个键,而不仅仅是字母数字键。 KeyData属性返回一个Key值,还设置修饰符。修饰符与值进行OR运算,指定是否同时按下了Shift或Ctrl键。KeyValue属性是 Keys枚举的整数值。Modifiers属性包含一个Keys值,它表示被按下的修饰符键。如果选择了多个修饰符键,这些值就进行OR运算。键盘事件以 下述顺序来引发:
(1) KeyDown
(2) KeyPress
(3) KeyUp
Validating、Validated、Enter、Leave、GotFocus和LostFocus事件都处理获得焦点(或被激活)和失去 焦点的控件。在用户用tab键选择一个控件或用鼠标选择该控件时,该控件就获得了焦点。Enter、Leave、GotFocus和LostFocus事 件的功能似乎非常类似。GotFocus和LostFocus事件是低级事件,与Windows消息WM_SETFOCUS和WM_KILLFOCUS相 关。一般应尽可能使用Enter和Leave事件。Validating和Validated事件在验证控件时发生。这些事件接收一个 CancelEventArgs,利用该参数,把Cancel属性设置为true,就可以取消以后的事件。如果定制了验证代码,而且验证失败,就可以把 Cancel属性设置为true,且控件也不会失去焦点。Validating事件在验证过程中发生,Validated事件在验证过程后发生。这些事件 的引发顺序如下:
(1) Enter
(2) GotFocus
(3) Leave
(4) Validating
(5) Validated
(6) LostFocus
理解这些事件的引发顺序是很重要的,可以避免不小心创建递归事件。例如,在控件的LostFocus事件中设置控件的焦点,就会创建一个消息死锁,且应用程序会停止响应。
鼠标事件Click、DoubleClick、MouseDown、MouseUp、MouseEnter、MouseLeave和 MouseHover处理鼠标和控件的交互操作。如果处理Click和DoubleClick事件,每次捕获一个DoubleClick事件时,也会引发 Click事件。如果处理不正确,就会出现我们不希望的结果。Click和DoubleClick事件都把EventArgs作为其参数,而 MouseDown和MouseUp事件把MouseEventArgs作为其参数。MouseEventArgs包含几个有用的信息,例如单击的按钮、 按钮被单击的次数、鼠标轮制动器(鼠标轮上的凹槽)的数目和鼠标的当前XY坐标。如果可以访问这些信息,就必须处理MouseDown或MouseUp事 件,而不是Click或DoubleClick事件。
键盘事件的工作方式与此类似:需要一些信息来确定处理什么事件。对于简单的情况,KeyPress事件接收一个 KeyPressEventArgs,它包含表示被按键的字符值KeyChar。Handled属性用于确定事件是否已处理。把Handled属性设置为 true,事件就不会由操作系统进行默认处理。如果需要被按的键的更多信息,则处理KeyDown或KeyUp事件会比较合适。它们都接收 KeyEventArgs。KeyEventArgs中的属性包括Ctrl、Alt或Shift键是否被按下。KeyCode属性返回一个Keys枚举 值,表示被按下的键。与KeyPressEventArgs.KeyChar不同,KeyCode属性指定键盘上的每个键,而不仅仅是字母数字键。 KeyData属性返回一个Key值,还设置修饰符。修饰符与值进行OR运算,指定是否同时按下了Shift或Ctrl键。KeyValue属性是 Keys枚举的整数值。Modifiers属性包含一个Keys值,它表示被按下的修饰符键。如果选择了多个修饰符键,这些值就进行OR运算。键盘事件以 下述顺序来引发:
(1) KeyDown
(2) KeyPress
(3) KeyUp
Validating、Validated、Enter、Leave、GotFocus和LostFocus事件都处理获得焦点(或被激活)和失去 焦点的控件。在用户用tab键选择一个控件或用鼠标选择该控件时,该控件就获得了焦点。Enter、Leave、GotFocus和LostFocus事 件的功能似乎非常类似。GotFocus和LostFocus事件是低级事件,与Windows消息WM_SETFOCUS和WM_KILLFOCUS相 关。一般应尽可能使用Enter和Leave事件。Validating和Validated事件在验证控件时发生。这些事件接收一个 CancelEventArgs,利用该参数,把Cancel属性设置为true,就可以取消以后的事件。如果定制了验证代码,而且验证失败,就可以把 Cancel属性设置为true,且控件也不会失去焦点。Validating事件在验证过程中发生,Validated事件在验证过程后发生。这些事件 的引发顺序如下:
(1) Enter
(2) GotFocus
(3) Leave
(4) Validating
(5) Validated
(6) LostFocus
理解这些事件的引发顺序是很重要的,可以避免不小心创建递归事件。例如,在控件的LostFocus事件中设置控件的焦点,就会创建一个消息死锁,且应用程序会停止响应。
相关文章推荐
- Unity3D中关于场景销毁时事件调用顺序的一点记录
- phpunit测试学习 1:一点简单的扼要有用的东西的总结 一点入门认识
- 研究.text程序得出的自定义控件的一点东西,希望对大家有用
- 几年来积累下来的一点东西,希望大家有用
- 开通了博客,以后写一点或者转一点自己觉得有用也对大家有用的各种东西
- [资源]几年来积累下来的一点东西,希望大家有用.
- $.ajax各事件执行顺序
- 页面加载时触发的事件及顺序
- unity 事件顺序及功能说明
- 一些有用的东西集合
- 该是写一点东西的时候了
- 有关MAC FIR v5.1的一点东西,也许除了我没有人能看懂写得是什么……
- 继续boost的相关学习, boost::string_algo让std::string这样的废柴类有用一点
- 初学习cocos2d小结(感冒了,几行代码都记不住...稍微复杂一点的动作序列看不下去,还是总结一下这两天看的东西)
- aspx页面事件执行顺序
- 第四章 控制执行流程的一些笔记以及关于char的一点东西
- .net Page 执行事件顺序
- Unity3D中自带事件函数的执行顺序
- 独立组件之间重叠放置时,OnTouch事件的响应顺序
- ASP.NET页面事件:顺序与回传详解