ImageVerifierCode 换一换
格式:DOCX , 页数:62 ,大小:52.86KB ,
资源ID:7255424      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7255424.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Windows 窗体中的用户输入.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Windows 窗体中的用户输入.docx

1、Windows 窗体中的用户输入Windows 窗体中的用户输入.NET Framework 4.5其他版本此主题尚未评级-评价此主题Windows 窗体包括一种用户输入模型,该模型基于在处理相关的 Windows 消息时所引发的事件。本节中的主题提供了有关鼠标和键盘用户输入的信息,其中包括演示如何执行特定任务的代码示例。本节内容Windows 窗体应用程序中的用户输入提供处理 Windows 消息的用户输入事件和方法的概述。Windows 窗体应用程序中的键盘输入提供有关键盘消息处理、不同类型的键和键盘事件的信息。Windows 窗体应用程序中的鼠标输入提供有关鼠标事件和其他鼠标相关功能(包

2、括鼠标光标和鼠标捕获)的信息。如何:在代码中模拟鼠标和键盘事件演示通过编程模拟鼠标和键盘输入的几种不同方式。如何:在 Windows 窗体控件中处理用户输入事件显示处理大多数用户输入事件的代码示例,并报告有关每个事件的信息。Windows 窗体中的用户输入验证描述用于验证 Windows 窗体应用程序中的用户输入的方法。相关章节TopicLocation在 Windows 窗体中创建事件处理程序.NET Framework SDK 托管客户端在 Windows 窗体中创建事件处理程序.NET Framework SDK 托管客户端在 Windows 窗体中创建事件处理程序.NET Framew

3、ork SDK 托管客户端在 Windows 窗体中创建事件处理程序dv_fxmancli在 Windows 窗体中创建事件处理程序dv_fxmancli社区附加资源Windows 窗体应用程序中的用户输入.NET Framework 4.5其他版本在 Windows 窗体中,用户输入以 Windows 消息的形式发送到应用程序。一系列可重写的方法在应用程序、窗体和控件级处理这些消息。当这些方法接收到鼠标和键盘消息时,将引发相应的事件,可以处理这些事件来获取关于鼠标或键盘输入的信息。在许多情况下,Windows 窗体应用程序可以仅仅通过处理这些事件来处理所有用户输入。在其他情况下,应用程序可能

4、需要重写处理消息的某个方法,以便在特定消息被应用程序、窗体或控件接收前截获它。鼠标和键盘事件所有 Windows 窗体控件都继承一组与鼠标和键盘输入有关的事件。例如,控件可以处理KeyPress事件来确定所按键的字符代码,也可以处理MouseClick事件来确定鼠标单击的位置。有关鼠标和键盘事件的更多信息,请参见使用键盘事件和Windows 窗体中的鼠标事件。处理用户输入消息的方法窗体和控件可以访问IMessageFilter界面和一组可重写的方法,这些方法处理消息队列中不同位置的 Windows 消息。这些方法都有Message参数,该参数封装 Windows 消息的低级别详细信息。可以实现

5、或重写这些方法,以检查消息,然后或者使用该消息,或者将消息传递到消息队列中的下一个使用者。下表列出了处理 Windows 窗体中的所有 Windows 消息的方法。方法注释PreFilterMessage此方法在应用程序级截获排队的(也称为已发送的)Windows 消息。PreProcessMessage此方法在 Windows 消息处理前在窗体和控件级截获它们。WndProc此方法在窗体和控件级处理 Windows 消息。DefWndProc此方法在窗体和控件级执行 Windows 消息的默认处理。这提供了窗口的最小功能。OnNotifyMessage此方法在消息处理后在窗体和控件级截获它们

6、。若要调用此方法,必须设置EnableNotifyMessage样式位。键盘和鼠标消息也可以被另外一组可重写的、特定于这些消息类型的方法处理。有关更多信息,请参见键盘输入工作原理和Windows 窗体中鼠标输入的工作原理。Windows 窗体应用程序中的键盘输入.NET Framework 4.5Windows 窗体包括允许您对特定按键作出响应的标准键盘事件,还提供了在应用程序、窗体和控件级别截获、修改和使用按键的方式。本节内容键盘输入工作原理描述键盘消息如何处理和转换为键盘事件。使用键盘事件提供有关键盘事件类型的信息,还提供键盘事件处理程序所接收的信息。如何:修改标准控件中的键盘输入提供用于

7、显示在键值到达控件之前如何修改键值的代码示例。如何:确定所按下的修改键演示如何确定除了另一个键以外是否还按了 Shift、Alt 或 Ctrl 键。如何:在窗体级别处理键盘输入提供用于显示如何在键到达控件之前截获键的代码示例。键盘输入工作原理.NET Framework 4.5其他版本此主题尚未评级-评价此主题Windows 窗体通过引发键盘事件来处理键盘输入以响应 Windows 消息。大多数 Windows 窗体应用程序都通过处理键盘事件来以独占方式处理键盘输入。但是,必须了解键盘消息的工作方式,才能实现更高级的键盘输入方案(如在按键到达控件之前截获它们)。本主题描述 Windows 窗体

8、能够识别的按键数据的类型,并概述键盘消息的传送方式。有关键盘事件的信息,请参见使用键盘事件。按键的类型Windows 窗体将键盘输入标识为由按位Keys枚举表示的虚拟键代码。使用Keys枚举,可以综合一系列按键以生成单个值。这些值与 WM_KEYDOWN 和 WM_SYSKEYDOWN Windows 消息所伴随的值相对应。可通过处理KeyDown或KeyUp事件来检测大多数物理按键操作。字符键是Keys枚举的子集,它们与 WM_CHAR 和 WM_SYSCHAR Windows 消息所伴随的值相对应。如果通过组合按键得到一个字符,则可以通过处理KeyPress事件来检测该字符。或者,可以使用

9、由 Visual Basic 编程接口公开的Keyboard来发现已按下的键并发送它们。有关更多信息,请参见访问键盘 (Visual Basic)。键盘事件的顺序正如上面列出的那样,在一个控件上可能出现三个与键盘相关的事件。以下顺序是发生这些事件的常规顺序:1. 用户按“a”键,该键将被预处理和调度,而且会发生KeyDown事件。2. 用户按住“a”键,该键将被预处理和调度,而且会发生KeyPress事件。在用户按住某个键时,此事件会发生多次。3. 用户松开“a”键,该键将被预处理和调度,而且会发生KeyUp事件。键的预处理像其他消息一样,键盘消息是在窗体或控件的WndProc方法中处理的。但

10、是,在处理键盘消息之前,PreProcessMessage方法会调用一个或多个方法,这些方法可被重写以处理特殊的字符键和物理按键。您可以重写这些方法,以便在控件处理消息之前检测并筛选某些按键。下表按照方法出现的顺序列出了正在执行的操作以及所出现的相关方法。KeyDown 事件的预处理操作相关方法注释检查命令键(如快捷键或菜单快捷键)。ProcessCmdKey此方法处理命令键,命令键的优先级高于常规键。如果此方法返回true,则将不调度键消息,而且将不发生键事件。如果此方法返回false,则将调用IsInputKey.检查该键是否为需要预处理的特殊键,或者它是否为应引发KeyDown事件并且被

11、调度到某个控件的普通字符键。IsInputKey如果此方法返回true,则表示该控件为常规字符,而且将引发KeyDown事件。如果此方法返回false,则将调用ProcessDialogKey。说明为了确保控件获取某个键或键的组合,您可以处理PreviewKeyDown事件,并针对所需的键,将PreviewKeyDownEventArgs的IsInputKey设置为true。检查该键是否为导航键(Esc、Tab、回车键或箭头键)。ProcessDialogKey此方法处理在控件内实现特殊功能(如在控件及其父级之间切换焦点)的物理按键。如果中间控件不处理该键,则将调用父控件的ProcessDia

12、logKey,直至层次结构中的最顶端控件。如果此方法返回true,则将完成预处理,而且将不生成按键事件。如果此方法返回false,则将发生KeyDown事件。KeyPress 事件的预处理操作相关方法注释检查该键是否为控件应当处理的普通字符IsInputChar如果该字符是普通字符,则此方法返回true,并且将引发KeyPress事件,而且不再进行预处理。否则,将调用ProcessDialogChar。检查该字符是否为助记符(如按钮上的“确定(&O)”)ProcessDialogChar类似于ProcessDialogKey,将沿控件的层次结构向上调用此方法。如果控件是容器控件,此方法将通过调

13、用控件及其子控件的ProcessMnemonic来检查助记键。如果ProcessDialogChar返回true,则KeyPress事件不会发生。处理键盘消息键盘消息在到达窗体或控件的WndProc方法之后,它们将由一组可被重写的方法来处理。其中的每种方法都返回一个Boolean值,该值指定控件是否已处理和使用了键盘消息。如果其中的某种方法返回true,则键盘消息将被视为已处理,而且它将不传递到控件的基控件或父控件进行进一步处理。否则,消息将停留在消息队列中,而且可能会在控件的基控件或父控件的其他方法中进行处理。下表显示用来处理键盘消息的方法。方法注释ProcessKeyMessage此方法处

14、理由控件的WndProc方法接收的所有键盘消息。ProcessKeyPreview此方法将键盘消息发送到控件的父控件。如果ProcessKeyPreview返回true,则将不生成键事件;否则将调用ProcessKeyEventArgs。ProcessKeyEventArgs此方法根据需要引发KeyDown、KeyPress和KeyUp事件。重写键盘方法在预处理和处理键盘消息时,可以使用许多方法进行重写;但是,这些方法有好有坏。下表显示可能需要完成的任务以及重写键盘方法的最佳方式。有关重写方法的更多信息,请参见Overriding Properties and Methods。任务方法截获导航

15、键并引发KeyDown事件。例如,您希望在文本框中处理 Tab 和回车键。重写IsInputKey。说明此外,也可以处理PreviewKeyDown事件,并针对所需的一个或多个键,将PreviewKeyDownEventArgs的IsInputKey设置为true。在控件上执行特殊的输入或导航处理。例如,您可能希望在列表控件中使用箭头键更改选定项。重写ProcessDialogKey截获导航键并引发KeyPress事件。例如,您可能希望在数字显示框控件中,多次按箭头键来加快数值的设定速度。重写IsInputChar。在发生KeyPress事件期间执行特殊的输入或导航处理。例如,在列表控件中,按

16、住“r”键将跳到以字母 r 开头的项并在这些项间切换。重写ProcessDialogChar执行自定义的助记键处理;例如,您希望处理所有者描述的、包含在工具栏中的按钮上的助记键。重写ProcessMnemonic。使用键盘事件.NET Framework 4.5其他版本此主题尚未评级-评价此主题大多数 Windows 窗体程序都通过处理键盘事件来处理键盘输入。本主题提供键盘事件的概述,其中包括关于何时使用每个事件以及提供给每个事件的数据的详细信息。键盘事件当用户按键盘键时,Windows 窗体提供两个事件,而当用户松开键盘键时,Windows 窗体提供一个事件。 KeyDown事件发生一次 K

17、eyPress事件,当用户按住同一个键时,该事件可以发生多次。 当用户松开键时,KeyUp事件发生一次。当用户按键时,Windows 窗体根据键盘消息指定的是字符键还是物理键来确定要引发的事件。有关字符键和物理键的更多信息,请参见键盘输入工作原理。下表对这三个键盘事件进行了说明。键盘事件说明结果KeyDown当用户按物理键时将引发此事件。KeyDown的处理程序接收: 一个KeyEventArgs参数,它提供KeyCode属性(它指定一个物理键盘按钮)。 Modifiers属性(Shift、Ctrl 或 Alt)。 KeyData属性(它组合键代码和修改键)。KeyEventArgs参数还提供

18、:o Handled属性,可以设置该属性以防止基础控件接收键。o SuppressKeyPress属性,它可以用来抑制该键击的KeyPress和KeyUp事件。KeyPress当所按的键产生字符时将引发此事件。例如,当用户按 Shift 和小写的“a”键时,将产生大写字母“A”字符。KeyPress在KeyDown之后引发。 KeyPress的处理程序接收: 一个KeyPressEventArgs参数,它包含所按键的字符代码。此字符代码对于字符键和修改键的每个组合都是唯一的。例如,“A”键将生成:o 字符代码 65(如果与 Shift 键一起按下)o 或 Caps Lock 键 97(如果只按

19、下它一个键),o 和 1(如果它与 Ctrl 键一起按下)。KeyUp当用户松开物理键时将引发此事件。KeyUp的处理程序接收: KeyEventArgs参数:o 它提供KeyCode属性(指定一个物理键盘按钮)。o Modifiers属性(Shift、Ctrl 或 Alt)。o KeyData属性(它组合键代码和修改键)。请参见如何:修改标准控件中的键盘输入.NET Framework 4.5其他版本此主题尚未评级-评价此主题Windows 窗体提供了使用和修改键盘输入的功能。使用键是指在方法或事件处理程序中对键进行处理,以便消息队列中随后的其他方法和事件不会收到键值。修改键是指修改键值,以

20、便消息队列中随后的方法和事件处理程序收到另一个键值。本主题显示如何完成这些任务。使用键 在KeyPress事件处理程序中,将KeyPressEventArgs类的Handled属性设置为true。- 或 -在KeyDown事件处理程序中,将KeyEventArgs类的Handled属性设置为true。说明如果在KeyDown事件处理程序中设置Handled属性,将不会阻止对当前按键引发KeyPress和KeyUp事件。请将SuppressKeyPress属性用于此目的。下面的示例摘录自switch语句,该语句检查KeyPress事件处理程序所收到的KeyPressEventArgs的KeyCh

21、ar属性。此代码使用“A”和“a”字符键。C#VB Consume A and a.Case ChrW(65), ChrW(97) MessageBox.Show(Control.KeyPress: + _ e.KeyChar.ToString() + consumed.) e.Handled = True修改标准字符键 在KeyPress事件处理程序中,将KeyPressEventArgs类的KeyChar属性设置为新字符键的值。下面的示例摘录自switch语句,该语句将“B”修改为“A”,并将“b”修改为“a”。注意,KeyPressEventArgs的Handled属性设置为false,

22、以便将新的键值传播到消息队列中的其他方法和事件。C#VB Modify B to A and forward the key.Case ChrW(66) MessageBox.Show(Control.KeyPress: + _ e.KeyChar.ToString() + replaced by A.) e.KeyChar = ChrW(65) e.Handled = False Modify b to a and forward the key.Case ChrW(98) MessageBox.Show(Control.KeyPress: + _ e.KeyChar.ToString()

23、+ replaced by a.) e.KeyChar = ChrW(97) e.Handled = False修改非字符键 重写用于处理 Windows 消息的Control方法,并检测 WM_KEYDOWN 或 WM_SYSKEYDOWN 消息,然后将Message参数的WParam属性设置为表示新的非字符键的Keys值。下面的代码示例演示如何重写控件的PreProcessMessage方法,以检测键 F1 到 F9,并将任何 F3 键修改为按 F1 键。有关可以重写以截获键盘消息的Control方法的更多信息,请参见Windows 窗体应用程序中的用户输入和键盘输入工作原理。C#VB D

24、etect F1 through F9 during preprocessing and modify F3.Public Overrides Function PreProcessMessage(ByRef m As Message) _ As Boolean If m.Msg = WM_KEYDOWN Then Dim keyCode As Keys = CType(m.WParam, Keys) And Keys.KeyCode Detect F1 through F9. Select Case keyCode Case Keys.F1, Keys.F2, Keys.F3, Keys.F

25、4, Keys.F5, _ Keys.F6, Keys.F7, Keys.F8, Keys.F9 MessageBox.Show(Control.PreProcessMessage: + _ keyCode.ToString() + pressed.) Replace F3 with F1, so that ProcessKeyMessage will receive F1 instead of F3. If keyCode = Keys.F3 Then m.WParam = CType(Keys.F1, IntPtr) MessageBox.Show(Control.PreProcessMe

26、ssage: + _ keyCode.ToString() + replaced by F1.) End If End Select End If Send all other messages to the base method. Return MyBase.PreProcessMessage(m)End Function示例下面的代码示例是上述各节中的全部代码示例应用程序。应用程序使用从TextBox类派生的自定义控件来使用和修改键盘输入。C#VBImports SystemImports System.DrawingImports System.SecurityImports Syst

27、em.Security.PermissionsImports System.Windows.FormsNamespace KeyboardInput _ Class Form1 Inherits Form The following Windows message value is defined in Winuser.h. Private WM_KEYDOWN As Integer = &H100 Private WithEvents CustomTextBox1 As New CustomTextBox() _ Public Shared Sub Main() Application.En

28、ableVisualStyles() Application.Run(New Form1() End Sub Public Sub New() Me.AutoSize = True Me.Controls.Add(CustomTextBox1) End Sub Consume and modify several character keys. Sub CustomTextBox1_KeyPress(ByVal sender As Object, _ ByVal e As KeyPressEventArgs) Handles CustomTextBox1.KeyPress Select Cas

29、e e.KeyChar Consume A and a. Case ChrW(65), ChrW(97) MessageBox.Show(Control.KeyPress: + _ e.KeyChar.ToString() + consumed.) e.Handled = True Modify B to A and forward the key. Case ChrW(66) MessageBox.Show(Control.KeyPress: + _ e.KeyChar.ToString() + replaced by A.) e.KeyChar = ChrW(65) e.Handled = False Modify b to a and forward the key. Case ChrW(98) MessageBox.Show(Control.KeyPress: + _ e.KeyChar.ToString() + replaced by a.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1