Freigeben über


KeyPressEventArgs-Klasse

Stellt Daten für das KeyPress-Ereignis bereit.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

Syntax

'Declaration
<ComVisibleAttribute(True)> _
Public Class KeyPressEventArgs
    Inherits EventArgs
'Usage
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

Hinweise

KeyPressEventArgs gibt das Zeichen an, das aus einem Tastendruck des Benutzers resultiert. Wenn der Benutzer beispielsweise UMSCHALT+K drückt, gibt die KeyChar-Eigenschaft den Großbuchstaben K zurück.

Ein KeyPress-Ereignis tritt ein, wenn der Benutzer eine Taste drückt. Zwei Ereignisse, die eng mit dem KeyPress-Ereignis zusammenhängen, sind KeyUp und KeyDown. Das KeyDown-Ereignis tritt vor jedem KeyPress-Ereignis ein, wenn der Benutzer eine Taste drückt. Ein KeyUp-Ereignis tritt ein, sobald der Benutzer die Taste loslässt. Wenn der Benutzer eine Taste gedrückt hält, treten bei jeder Wiederholung des Zeichens zusätzliche KeyDown-Ereignisse und KeyPress-Ereignisse ein. Beim Loslassen wird ein einzelnes KeyUp-Ereignis ausgelöst.

Zusammen mit jedem KeyPress-Ereignis wird ein KeyPressEventArgs übergeben. Für jedes KeyDown-Ereignis und jedes KeyUp-Ereignis wird ein KeyEventArgs übergeben. KeyEventArgs gibt an, ob eine der Modifizierertasten (STRG, UMSCHALT oder ALT) zusammen mit einer anderen Taste gedrückt wurde. (Diese Modifiziererinformationen können auch über die ModifierKeys-Eigenschaft der Control-Klasse abgerufen werden.)

Legen Sie Handled auf true fest, um das KeyPress-Ereignis abzubrechen. Dadurch wird verhindert, dass das Steuerelement das Drücken der Taste verarbeitet.

Hinweis

Einige Steuerelemente verarbeiten bestimmte Tastenanschläge in KeyDown. Beispielsweise verarbeitet RichTextBox die EINGABETASTE, bevor KeyPress aufgerufen wird. In einem solchen Fall können Sie das KeyPress-Ereignis nicht abbrechen und müssen den Tastenanschlag stattdessen in KeyDown abbrechen.

Informationen über das Ereignismodell finden Sie unter Ereignisse und Delegaten.

Beispiel

Im folgenden Beispiel wird die Verwendung von KeyPressEventArgs zum Zählen von gedrückten Tasten und zum Anzeigen der Ergebnisse nach jedem Tastendruck veranschaulicht. Anschließend wird Handled auf True festgelegt, um eine weitere Verarbeitung der Taste durch das Betriebssystem zu verhindern. Im Beispiel wird davon ausgegangen, dass TextBox in einem Formular platziert wurde.

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

Sie müssen eine neue Instanz dieser Klasse erstellen. Sie müssen auch den Ereignishandler festlegen. Dies können Sie im Konstruktor für diese Klasse vornehmen.

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

Wenn das angegebene Ereignis im Steuerelement ausgelöst wird, wird die verbundene Methode aufgerufen, und die Anwendung kann als Reaktion auf das Ereignis Code ausführen.

Vererbungshierarchie

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

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

KeyPressEventArgs-Member
System.Windows.Forms-Namespace
OnKeyPress
Control.KeyPress-Ereignis
KeyEventArgs-Klasse
Control.KeyDown-Ereignis
Control.KeyUp-Ereignis
Control.ModifierKeys-Eigenschaft