KeyPressEventArgs 类

KeyPress 事件提供数据。

**命名空间:**System.Windows.Forms
**程序集:**System.Windows.Forms(在 system.windows.forms.dll 中)

语法

声明
<ComVisibleAttribute(True)> _
Public Class KeyPressEventArgs
    Inherits EventArgs
用法
Dim instance As KeyPressEventArgs
[ComVisibleAttribute(true)] 
public class KeyPressEventArgs : EventArgs
[ComVisibleAttribute(true)] 
public ref class KeyPressEventArgs : public EventArgs
/** @attribute ComVisibleAttribute(true) */ 
public class KeyPressEventArgs extends EventArgs
ComVisibleAttribute(true) 
public class KeyPressEventArgs extends EventArgs

备注

KeyPressEventArgs 指定在用户按键时撰写的字符。例如,当用户按 Shift + K 时,KeyChar 属性返回一个大写字母 K。

当用户按下任意键时,发生 KeyPress 事件。与 KeyPress 事件紧密相关的两个事件为 KeyUpKeyDown。当用户按下某个键时,KeyDown 事件先于每个 KeyPress 事件发生;当用户释放某个键时发生 KeyUp 事件。当用户按住某个键时,每次字符重复时,KeyDownKeyPress 事件也都重复发生。一个 KeyUp 事件在释放按键时生成。

KeyPressEventArgs 随着 KeyPress 事件的每次发生而被传递。KeyEventArgs 随着 KeyDownKeyUp 事件的每次发生而被传递。KeyEventArgs 指定是否有任一个组合键(Ctrl、Shift 或 Alt)在另一个键按下的同时也曾按下。(此修饰符信息也可以通过 Control 类的 ModifierKeys 属性获得。)

Handled 设置为 true,以取消 KeyPress 事件。这可防止控件处理按键。

提示

有些控件将会在 KeyDown 上处理某些击键。例如,RichTextBox 在调用 KeyPress 前处理 Enter 键。在这种情况下,您无法取消 KeyPress 事件,而是必须从 KeyDown 取消击键。

有关事件模型的信息,请参见 事件和委托

示例

下面的示例说明,在按下键时使用 KeyPressEventArgs 对键进行计数,并在每次按下键后显示结果。然后将 Handled 设置为真,以防止操作系统进一步处理该键。本示例假定窗体上有 TextBox

public ref class myKeyPressClass
{
private:
   static long keyPressCount = 0;
   static long backspacePressed = 0;
   static long returnPressed = 0;
   static long escPressed = 0;
   TextBox^ textBox1;
   void myKeyCounter( Object^ sender, KeyPressEventArgs^ ex )
   {
      switch ( ex->KeyChar )
      {
            // Counts the backspaces.
         case '\b':
         backspacePressed = backspacePressed + 1;
         break;

            // Counts the ENTER keys.
         case '\r':
         returnPressed = returnPressed + 1;
         break;

            // Counts the ESC keys.  
         case (char)27:
         escPressed = escPressed + 1;
         break;
            
            // Counts all other keys.
         default:
         keyPressCount = keyPressCount + 1;
         break;
      }
      textBox1->Text = String::Concat( 
         backspacePressed, " backspaces pressed\r\n",
         escPressed, " escapes pressed\r\n",
         returnPressed, " returns pressed\r\n",
         keyPressCount, " other keys pressed\r\n" );
      ex->Handled = true;
   }
};
public class MyKeyPressClass
{
    private static long keyPressCount = 0;
    private static long backspacePressed = 0;
    private static long returnPressed = 0;
    private static long escPressed = 0;
    private TextBox textBox1 =  new TextBox();
   
    private void MyKeyCounter(Object sender, KeyPressEventArgs ex)
    {
        switch(ex.get_KeyChar()) {
            // Counts the backspaces.
            case 'b' : 
                backspacePressed = backspacePressed + 1;
                break;
            // Counts the ENTER keys.
            case 'r' : 
                returnPressed = returnPressed + 1;
                break;
            // Counts the ESC keys.  
            case (char)(27) : 
                escPressed = escPressed + 1;
                break;
            default : 
                // Counts all other keys.
                keyPressCount = keyPressCount + 1;
                break;
        }
      
        textBox1.set_Text(backspacePressed + " backspaces pressed\r\n"
            + escPressed + " escapes pressed\r\n" + returnPressed
            + " returns pressed\r\n"+keyPressCount + " other keys pressed\r\n");
        ex.set_Handled(true);
    } //MyKeyCounter
} //MyKeyPressClass

您必须创建此类的新实例。还必须设置事件处理程序。您可在构造函数中为您的类执行上述操作。

public:
   myKeyPressClass^ myKeyPressHandler;

   Form1()
   {
      myKeyPressHandler = gcnew myKeyPressClass;

      InitializeComponent();

      textBox1->KeyPress += gcnew KeyPressEventHandler(
         myKeyPressHandler, &myKeyPressClass::myKeyCounter );
   }
private MyKeyPressClass myKeyPressHandler = new MyKeyPressClass();
public Form1()
{
    InitializeComponent();
    textBox1.add_KeyPress(new KeyPressEventHandler(myKeyPressHandler.
        MyKeyCounter));
} //Form1

当在控件中引发指定事件时,将会调用附加方法,并且应用程序可以执行代码以响应该事件。

继承层次结构

System.Object
   System.EventArgs
    System.Windows.Forms.KeyPressEventArgs

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

KeyPressEventArgs 成员
System.Windows.Forms 命名空间
OnKeyPress
Control.KeyPress 事件
KeyEventArgs 类
Control.KeyDown 事件
Control.KeyUp 事件
Control.ModifierKeys 属性