C#第11章 键盘和鼠标操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 以下代码用于检测是否按下F1键: private void textBox1_KeyDown(object sender, KeyEventArgs e) { if(e.KeyCode == Keys.F1) label1.Text = "所按键为" + e.KeyCode.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、IsPunctuation、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.1 窗体对象的焦点
1. 通过用户的选择设置焦点
• 程序运行时,用户可以利用鼠标和键盘操作来选择 窗体。 • 用户选择窗体,最简单的方法是用鼠标单击窗体或 任务栏的窗体图标,使窗体获得焦点。通过鼠标操作, 用户可以很方便地在多个窗体之间随意切换。 • 用户选择窗体,也可以在按住Alt键的同时按Tab键 切换,直到选中想要使之获得焦点的窗体。
} • KeyDown和KeyUp事件处理程序的参数相同,都接收一 个KeyEventArgs类型的参数,它含有与此事件相关的数据。 可以通过KeyEventArgs类的属性来判断用户按键,其常用 属性如表11-2所示。
11.2.3 KeyDown和KeyUp事件
• KeyDown和KeyUp事件中,一般通过KeyCode和KeyValue 属性来获取用户的按键,通过Alt、Control和Shift属性来 判断用户是否使用了Alt、Control、Shift组合键。
11.1.2 控件对象的焦点
3. 利用控件对象的属性设置焦点
• 在程序的设计阶段,可以利用控件对象的TabIndex属 性来设置焦点。该属性可以指示控件的Tab键顺序索引, 也就是当按下Tab键时焦点在控件间移动的顺序。 • 程序运行时,通过Tab键,可以按照TabIndex从小到 大的顺序使焦点在众多控件之间切换。默认情况下,建立 的第一个控件的TabIndex值为0,第二个控件的TabIndex 值为1,依此类推。 • 可以在【属性】窗口中设置控件对象的TabIndex属性 来改变该控件的Tab键顺序,也可以通过“视图”菜单的 “Tab键顺序”来查看和修改一个窗体上所有控件的Tab键 顺序。
11.2.2 KeyPress事件
• 当用户按下键盘上某一个字符键时,会引发当前拥有 焦点对象的KeyPress事件。 • 如果要为某个窗体对象或控件对象添加KeyPress事件 处理程序,首先在设计器窗口选中该对象,然后在属性窗 口的事件列表中找到KeyPress事件并双击它,即可在代码 窗口看到该对象的KeyPress事件处理程序,其格式如下: 【格式】 private void 对象名_KeyPress(object sender, KeyPressEventArgs e) { // 程序代码 }
11.1.2 控件对象的焦点
2. 利用控件对象的方法设置焦点
• C#.NET的所有标准控件都有一个Focus方法,通过该 方法可以使控件对象获得焦点。 • 如果在程序运行到某个阶段时,需要把某个控件对象 激活以进行下一步操作,只要在适当位置编写代码“对象 名.Focus();”就能使该对象获得焦点。 • 例如,程序运行完代码“textBox1.Focus();”,就可 以使文本框textBox1获得焦点。
11.1.2 控件对象的焦点
• 拥有焦点的控件,一般都显示一个闪烁的光标(如 TextBox)或者突出显示(如Button周围会出现一个虚线 框)。 • 控件对象的焦点,可以在设计阶段设置,也可以在程 序运行时设置。 • 控件对象焦点的设置方法主要有三种:第一种是运行 时通过用户的选择来实现,第二种是运行时利用控件对象 的方法来实现,第三种是设计时利用控件对象的属性来实 现。
11.1.2 控件对象的焦点
1. 通过用户的选择设置焦点
• 程序运行时,用户可以利用鼠标和键盘操作来选择控 件对象。 • 用户选择控件对象,最简单的方法是用鼠标单击控件 对象使之获得焦点。通过鼠标操作,用户可以很方便地在 多个控件对象之间随意切换。 • 用户选择控件对象,也可以按Tab键切换,直到选中 想要使之获得焦点的控件对象;如果控件对象有访问键或 快捷键,也可以通过访问键或快捷键选择控件对象。
11.2.3 KeyDown和KeyUp事件
【格式】private void 对象名_KeyDown(object sender, KeyEventArgs e) {
// 程序代码
} private void 对象名_KeyUp(object sender, KeyEventArgs e) {
// 程序代码
11.2.1 按键事件发生的顺序
• 在程序中,经常需要判断用户是否按下了特定的键, KeyPress、KeyDown和KeyUp事件可以用于读取按键。当按 下并松开一个键时,键事件按下列顺序发生: KeyDown、 KeyPress、KeyUp。
11.2.1 按键事件发生的顺序
• 需要注意的是,并不是按下键盘上的任意一个键都会 引发KeyPress事件,KeyPress事件只对会产生ACSII码的 字符键有反应,包括数字、大小写字母、Enter、 Backspace、Esc、Tab等键;对于方向键、功能键等不会 产生ASCII码的非字符键,KeyPress事件不会发生。 • KeyPress、KeyDown和KeyUp事件一般用于可获得焦点 的对象,如窗体、按钮、文本框、单选按钮、复选框、组 合框等。 • 总之,按下任意键时会触发KeyDown事件,松开任意 键时会触发KeyUp事件。按下并松开键盘上的某个字符键 时会依次触发KeyDown、KeyPress、KeyUp事件,按下并松 开键盘上的某个非字符键时会依次触发KeyDown和KeyUp事 件。
11.2.2 KeyPress事件
• KeyPress事件处理程序接收一个KeyPressEventArgs类型的 参数,它含有与此事件相关的数据。 • 在KeyPress事件中,可以通过KeyPressEventArgs类的 KeyChar属性来判断按键字符。KeyChar属性的取值是Char类型, 其值为用户按键所得的组合字符。例如,如果用户按下的是 Shift+a,则KeyChar属性的值将为大写字母A。 • 以下代码用于检测是否按下大写字母A: private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if(e.KeyChar == 'A') label1.Text = "所按字符键为" + e.KeyChar.ToString(); }
•
目录
11.1 焦点处理 11.2 键盘操作
11.3 鼠标操作 11.4 本章小结
11.1 焦点处理
• 在程序设计中,一个对象拥有焦点,表明它可以接收 来自键盘或鼠标的用户输入。只有获得焦点的对象才能够 接受键盘和鼠标的输入,所以在处理键盘和鼠标事件时, 应该注意对象焦点的处理。
• 11.1.1 窗体对象的焦点
11.1.1 窗体对象的焦点
2. 利用窗体对象的方法设置焦点
• 多窗体程序中,可以在主窗体中对从窗体对象调用 Activate方法,使从窗体获得焦点。 • 例如,可以在主窗体frmMain中的适当位置编写代码 “frmSub1.Activate();”使从窗体对象frmSub1获得焦点。
•
MDI程序中,也可以在父窗体中通过 ActivateMdiChild方法来激活指定的子窗体使之获得焦点。 • 例如,可以在父窗体frmParent中的适当位置编写代 码“this.ActivateMdiChild (frmChild);”使子窗体对象 frmChild获得焦点。
11.1.2 控件对象的焦点
提示:
• (1)并非所有的控件都具有接收焦点的能力,通常是可以和用 户交互的控件(如Button、TextBox)才能接收焦点;而Label、 PictureBox等只能显示信息的控件,则没有获得焦点的能力。 • (2)大多数不能获得焦点的控件也具有Focus方法和TabIndex属 性,但都无法使其获得焦点,按Tab键时这些控件将被跳过。 • (3)通常情况下,在程序运行时按Tab键,能够选择Tab键顺序 中的每一个可接收焦点的控件;但是有时某个控件不需要获得焦 点,只需将控件的TabStop属性设为false,便可将此控件从Tab 键顺序中删除,但仍然保持它在实际Tab键顺序中的位置,只不 过在按Tab键时这个控件将被跳过;TabStop属性指示是否可以使 用Tab键为控件提供焦点。 • (4)只有当对象的Enabled和Visible属性均为True时,才能接 收焦点。
11. 2 键盘操作
• Windows应用程序能够响应多种键盘操作,键盘事件 是用户与程序之间交互操作的主要方法。C#.NET主要为对 象提供了KeyPress、KeyDown和KeyUp三种键盘事件。 • 在.NET框架中,KeyEventArgs和KeyPressEventArgs 类负责提供键盘数据。KeyEventArgs类为KeyDown和KeyUp 事件提供数据,KeyPressEventArgs类为KeyPress事件提 供数据。
LOGO
《Visual C#.NET程序设计教程 》
第11章 键盘和鼠标操作
内容简介
• 在Windows窗体应用程序中,经常需要与用户 进行交互,交互操作往往是通过键盘和鼠标完成 的。为了准确处理用户的输入,必须了解键盘和 鼠标事件中包含的数据。 本章主要介绍对象的焦点处理和常用的键盘、 鼠标事件。
Hale Waihona Puke Baidu
• 【例11-1】设计一个查询字符的ASCII码的程序,程序启动 后提示使用方法,用户按下某个键后显示该键字符及对应 的ASCII码,双击窗体可以清除查询结果。
11.2.3 KeyDown和KeyUp事件
• KeyDown和KeyUp事件提供了最低级的键盘响应,按下 任意键时会触发KeyDown事件,松开任意键时会触发KeyUp 事件。 • 利用KeyDown和KeyUp事件可以解决KeyPress事件的问 题,非字符键不会引发KeyPress事件,但非字符键却可以 引发KeyDown和KeyUp事件。 • 如果要为某个窗体对象或控件对象添加KeyDown或 KeyUp事件处理程序,首先在设计器窗口选中该对象,然 后在属性窗口的事件列表中找到KeyDown或KeyUp事件并双 击它,即可在代码窗口看到该对象的KeyDown或KeyUp事件 处理程序,其格式如下: