C#第11章 键盘和鼠标操作课件

上传人:我*** 文档编号:144984905 上传时间:2020-09-15 格式:PPT 页数:45 大小:1.35MB
返回 下载 相关 举报
C#第11章 键盘和鼠标操作课件_第1页
第1页 / 共45页
C#第11章 键盘和鼠标操作课件_第2页
第2页 / 共45页
C#第11章 键盘和鼠标操作课件_第3页
第3页 / 共45页
C#第11章 键盘和鼠标操作课件_第4页
第4页 / 共45页
C#第11章 键盘和鼠标操作课件_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《C#第11章 键盘和鼠标操作课件》由会员分享,可在线阅读,更多相关《C#第11章 键盘和鼠标操作课件(45页珍藏版)》请在金锄头文库上搜索。

1、第11章键盘和鼠标操作,内容简介,在Windows窗体应用程序中,经常需要与用户进行交互,交互操作往往是通过键盘和鼠标完成的。为了准确处理用户的输入,必须了解键盘和鼠标事件中包含的数据。 本章主要介绍对象的焦点处理和常用的键盘、鼠标事件。,目录,11.1 焦点处理,11.2 键盘操作,11.3 鼠标操作,11.4 本章小结,11.1 焦点处理,在程序设计中,一个对象拥有焦点,表明它可以接收来自键盘或鼠标的用户输入。只有获得焦点的对象才能够接受键盘和鼠标的输入,所以在处理键盘和鼠标事件时,应该注意对象焦点的处理。 11.1.1 窗体对象的焦点 获得焦点的窗体,通常具有蓝色的标题栏。多窗体程序中,

2、窗体对象的焦点,一般在程序运行时设置。 窗体对象焦点的设置方法主要有两种:一种是通过用户的选择来实现,另一种是利用窗体对象的方法来实现。,11.1.1 窗体对象的焦点,1. 通过用户的选择设置焦点 程序运行时,用户可以利用鼠标和键盘操作来选择窗体。 用户选择窗体,最简单的方法是用鼠标单击窗体或任务栏的窗体图标,使窗体获得焦点。通过鼠标操作,用户可以很方便地在多个窗体之间随意切换。 用户选择窗体,也可以在按住Alt键的同时按Tab键切换,直到选中想要使之获得焦点的窗体。,11.1.1 窗体对象的焦点,2. 利用窗体对象的方法设置焦点 多窗体程序中,可以在主窗体中对从窗体对象调用Activate方

3、法,使从窗体获得焦点。 例如,可以在主窗体frmMain中的适当位置编写代码“frmSub1.Activate();”使从窗体对象frmSub1获得焦点。 MDI程序中,也可以在父窗体中通过ActivateMdiChild方法来激活指定的子窗体使之获得焦点。 例如,可以在父窗体frmParent中的适当位置编写代码“this.ActivateMdiChild (frmChild);”使子窗体对象frmChild获得焦点。,11.1.2 控件对象的焦点,拥有焦点的控件,一般都显示一个闪烁的光标(如TextBox)或者突出显示(如Button周围会出现一个虚线框)。 控件对象的焦点,可以在设计阶段

4、设置,也可以在程序运行时设置。 控件对象焦点的设置方法主要有三种:第一种是运行时通过用户的选择来实现,第二种是运行时利用控件对象的方法来实现,第三种是设计时利用控件对象的属性来实现。,11.1.2 控件对象的焦点,1. 通过用户的选择设置焦点 程序运行时,用户可以利用鼠标和键盘操作来选择控件对象。 用户选择控件对象,最简单的方法是用鼠标单击控件对象使之获得焦点。通过鼠标操作,用户可以很方便地在多个控件对象之间随意切换。 用户选择控件对象,也可以按Tab键切换,直到选中想要使之获得焦点的控件对象;如果控件对象有访问键或快捷键,也可以通过访问键或快捷键选择控件对象。,11.1.2 控件对象的焦点,

5、2. 利用控件对象的方法设置焦点 C#.NET的所有标准控件都有一个Focus方法,通过该方法可以使控件对象获得焦点。 如果在程序运行到某个阶段时,需要把某个控件对象激活以进行下一步操作,只要在适当位置编写代码“对象名.Focus();”就能使该对象获得焦点。 例如,程序运行完代码“textBox1.Focus();”,就可以使文本框textBox1获得焦点。,11.1.2 控件对象的焦点,3. 利用控件对象的属性设置焦点 在程序的设计阶段,可以利用控件对象的TabIndex属性来设置焦点。该属性可以指示控件的Tab键顺序索引,也就是当按下Tab键时焦点在控件间移动的顺序。 程序运行时,通过T

6、ab键,可以按照TabIndex从小到大的顺序使焦点在众多控件之间切换。默认情况下,建立的第一个控件的TabIndex值为0,第二个控件的TabIndex值为1,依此类推。 可以在【属性】窗口中设置控件对象的TabIndex属性来改变该控件的Tab键顺序,也可以通过“视图”菜单的“Tab键顺序”来查看和修改一个窗体上所有控件的Tab键顺序。,11.1.2 控件对象的焦点,提示: (1)并非所有的控件都具有接收焦点的能力,通常是可以和用户交互的控件(如Button、TextBox)才能接收焦点;而Label、PictureBox等只能显示信息的控件,则没有获得焦点的能力。 (2)大多数不能获得焦

7、点的控件也具有Focus方法和TabIndex属性,但都无法使其获得焦点,按Tab键时这些控件将被跳过。 (3)通常情况下,在程序运行时按Tab键,能够选择Tab键顺序中的每一个可接收焦点的控件;但是有时某个控件不需要获得焦点,只需将控件的TabStop属性设为false,便可将此控件从Tab键顺序中删除,但仍然保持它在实际Tab键顺序中的位置,只不过在按Tab键时这个控件将被跳过;TabStop属性指示是否可以使用Tab键为控件提供焦点。 (4)只有当对象的Enabled和Visible属性均为True时,才能接收焦点。,11. 2 键盘操作,Windows应用程序能够响应多种键盘操作,键盘

8、事件是用户与程序之间交互操作的主要方法。C#.NET主要为对象提供了KeyPress、KeyDown和KeyUp三种键盘事件。 在.NET框架中,KeyEventArgs和KeyPressEventArgs类负责提供键盘数据。KeyEventArgs类为KeyDown和KeyUp事件提供数据,KeyPressEventArgs类为KeyPress事件提供数据。 11.2.1 按键事件发生的顺序 在程序中,经常需要判断用户是否按下了特定的键,KeyPress、KeyDown和KeyUp事件可以用于读取按键。当按下并松开一个键时,键事件按下列顺序发生: KeyDown、KeyPress、KeyUp

9、。,11.2.1 按键事件发生的顺序,需要注意的是,并不是按下键盘上的任意一个键都会引发KeyPress事件,KeyPress事件只对会产生ACSII码的字符键有反应,包括数字、大小写字母、Enter、Backspace、Esc、Tab等键;对于方向键、功能键等不会产生ASCII码的非字符键,KeyPress事件不会发生。 KeyPress、KeyDown和KeyUp事件一般用于可获得焦点的对象,如窗体、按钮、文本框、单选按钮、复选框、组合框等。 总之,按下任意键时会触发KeyDown事件,松开任意键时会触发KeyUp事件。按下并松开键盘上的某个字符键时会依次触发KeyDown、KeyPres

10、s、KeyUp事件,按下并松开键盘上的某个非字符键时会依次触发KeyDown和KeyUp事件。,11.2.2 KeyPress事件,当用户按下键盘上某一个字符键时,会引发当前拥有焦点对象的KeyPress事件。 如果要为某个窗体对象或控件对象添加KeyPress事件处理程序,首先在设计器窗口选中该对象,然后在属性窗口的事件列表中找到KeyPress事件并双击它,即可在代码窗口看到该对象的KeyPress事件处理程序,其格式如下: 【格式】 private void 对象名_KeyPress(object sender, KeyPressEventArgs e) / 程序代码 ,11.2.2 K

11、eyPress事件,KeyPress事件处理程序接收一个KeyPressEventArgs类型的参数,它含有与此事件相关的数据。 在KeyPress事件中,可以通过KeyPressEventArgs类的KeyChar属性来判断按键字符。KeyChar属性的取值是Char类型,其值为用户按键所得的组合字符。例如,如果用户按下的是Shift+a,则KeyChar属性的值将为大写字母A。 以下代码用于检测是否按下大写字母A: private void textBox1_KeyPress(object sender, KeyPressEventArgs e) if(e.KeyChar = A) lab

12、el1.Text = 所按字符键为 + e.KeyChar.ToString(); ,11.2.2 KeyPress事件,以下代码用于检测是否按下回车键: private void textBox1_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = (Char)Keys.Enter) label1.Text = 所按字符键为Enter键; 类Char提供了一系列的静态方法用于判断字符类别,如IsControl、IsDigit、IsLetter、IsLetterOrDigit、IsLower、IsNumber、IsPunct

13、uation、IsSeparator、IsSymbol、IsUpper、IsWhiteSpace分别用于判断一个字符是否是控制字符、十进制数字、字母、字母或十进制数字、小写字母、数字、标点符号、分隔符、符号、大写字母、空白。,11.2.2 KeyPress事件,以下代码用于检测键入的字符是否是字母或数字: private void textBox1_KeyPress(object sender, KeyPressEventArgs e) if (Char.IsLetterOrDigit(e.KeyChar) label1.Text = 键入的字符是字母或数字; 【例11-1】设计一个查询字符的

14、ASCII码的程序,程序启动后提示使用方法,用户按下某个键后显示该键字符及对应的ASCII码,双击窗体可以清除查询结果。,11.2.3 KeyDown和KeyUp事件,KeyDown和KeyUp事件提供了最低级的键盘响应,按下任意键时会触发KeyDown事件,松开任意键时会触发KeyUp事件。 利用KeyDown和KeyUp事件可以解决KeyPress事件的问题,非字符键不会引发KeyPress事件,但非字符键却可以引发KeyDown和KeyUp事件。 如果要为某个窗体对象或控件对象添加KeyDown或KeyUp事件处理程序,首先在设计器窗口选中该对象,然后在属性窗口的事件列表中找到KeyDo

15、wn或KeyUp事件并双击它,即可在代码窗口看到该对象的KeyDown或KeyUp事件处理程序,其格式如下:,11.2.3 KeyDown和KeyUp事件,【格式】private void 对象名_KeyDown(object sender, KeyEventArgs e) / 程序代码 private void 对象名_KeyUp(object sender, KeyEventArgs e) / 程序代码 KeyDown和KeyUp事件处理程序的参数相同,都接收一个KeyEventArgs类型的参数,它含有与此事件相关的数据。可以通过KeyEventArgs类的属性来判断用户按键,其常用属性

16、如表11-2所示。,11.2.3 KeyDown和KeyUp事件,KeyDown和KeyUp事件中,一般通过KeyCode和KeyValue属性来获取用户的按键,通过Alt、Control和Shift属性来判断用户是否使用了Alt、Control、Shift组合键。 以下代码用于检测是否按下F1键: private void textBox1_KeyDown(object sender, KeyEventArgs e) if(e.KeyCode = Keys.F1) label1.Text = 所按键为 + e.KeyCode.ToString(); ,11.2.3 KeyDown和KeyUp事件,以下代码用于判断是否按下数字键盘上的数字键: private void textBox1_KeyUp(object sender, KeyEventArgs e) if (e.KeyValue = 96 ,11.2.3 KeyDown和Ke

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号