Freigeben über


Form.KeyPreview-Eigenschaft

Ruft einen Wert ab, der angibt, ob das Formular Tastaturereignisse empfängt, bevor das Ereignis an das Steuerelement übergeben wird, das den Fokus besitzt, oder legt diesen fest.

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

Syntax

'Declaration
Public Property KeyPreview As Boolean
'Usage
Dim instance As Form
Dim value As Boolean

value = instance.KeyPreview

instance.KeyPreview = value
public bool KeyPreview { get; set; }
public:
property bool KeyPreview {
    bool get ();
    void set (bool value);
}
/** @property */
public boolean get_KeyPreview ()

/** @property */
public void set_KeyPreview (boolean value)
public function get KeyPreview () : boolean

public function set KeyPreview (value : boolean)

Eigenschaftenwert

true, wenn das Formular alle Tastaturereignisse empfängt. false, wenn das momentan ausgewählte Steuerelement im Formular Tastaturereignisse empfängt. Der Standardwert ist false.

Hinweise

Wenn diese Eigenschaft auf true festgelegt wird, empfängt das Formular alle der folgenden Ereignisse: KeyPress, KeyDown und KeyUp. Nachdem die Ereignishandler des Formulars die Verarbeitung der Tastatureingabe abgeschlossen haben, wird die Tastatureingabe dem Steuerelement zugewiesen, das den Fokus besitzt. Wenn beispielsweise die KeyPreview-Eigenschaft auf true festgelegt ist und das momentan ausgewählte Steuerelement eine TextBox ist, erhält das TextBox-Steuerelement die gedrückte Taste, nachdem die Tastatureingabe von den Ereignishandlern des Formulars behandelt wurde. Um Tastaturereignisse nur auf Formularebene zu behandeln und um zu verhindern, dass Steuerelemente Tastaturereignisse empfangen, legen Sie die KeyPressEventArgs.Handled-Eigenschaft des KeyPress-Ereignishandlers des Formulars auf true fest.

Mit dieser Eigenschaft können Sie die meisten Tastatureingaben in der Anwendung verarbeiten und entweder die Tastatureingabe behandeln oder das entsprechende Steuerelement aufrufen, damit dieses den Tastenanschlag behandelt. Wenn beispielsweise eine Anwendung Funktionstasten verwenden, empfiehlt es sich, die Tastatureingaben auf Formularebene zu verarbeiten, damit nicht für jedes Steuerelement, das Tastaturereignisse empfangen könnte, Code verfasst werden muss.

Hinweis

Wenn ein Formular über keine sichtbaren oder aktivierten Steuerelemente verfügt, empfängt es automatisch alle Tastaturereignisse.

Hinweis

Ein Steuerelement in einem Formular kann ggf. so programmiert werden, dass Tastaturanschläge, die es empfängt, abgebrochen werden. Da das Steuerelement diese Tastaturanschläge nie an das Formular sendet, wird dieses sie nie empfangen, und zwar unabhängig davon, wie die Einstellungen in KeyPreview festgelegt sind.

Beispiel

Das folgende Codebeispiel veranschaulicht das Festlegen der KeyPreview-Eigenschaft eines Formulars auf true und das Behandeln der Tastaturereignisse auf Formularebene. Fügen Sie zum Ausführen des Beispiels folgenden Code in ein leeres Formular ein.

using namespace System::Windows::Forms;

// This button is a simple extension of the button class that overrides
// the ProcessMnemonic method.  If the mnemonic is correctly entered,  
// the message box will appear and the click event will be raised.  
// This method makes sure the control is selectable and the 
// mnemonic is correct before displaying the message box
// and triggering the click event.
public ref class MyMnemonicButton: public Button
{
protected:
   bool ProcessMnemonic( char inputChar )
   {
      if ( CanSelect && IsMnemonic( inputChar, this->Text ) )
      {
         MessageBox::Show( "You've raised the click event "
         "using the mnemonic." );
         this->PerformClick();
         return true;
      }

      return false;
   }

};


// Declare the controls contained on the form.
public ref class Form1: public System::Windows::Forms::Form
{
private:
   MyMnemonicButton^ button1;

public private:
   System::Windows::Forms::ListBox^ ListBox1;

public:
   Form1()
      : Form()
   {
      
      // Set KeyPreview object to true to allow the form to process 
      // the key before the control with focus processes it.
      this->KeyPreview = true;
      
      // Add a MyMnemonicButton.  
      button1 = gcnew MyMnemonicButton;
      button1->Text = "&Click";
      button1->Location = System::Drawing::Point( 100, 120 );
      this->Controls->Add( button1 );
      
      // Initialize a ListBox control and the form itself.
      this->ListBox1 = gcnew System::Windows::Forms::ListBox;
      this->SuspendLayout();
      this->ListBox1->Location = System::Drawing::Point( 8, 8 );
      this->ListBox1->Name = "ListBox1";
      this->ListBox1->Size = System::Drawing::Size( 120, 95 );
      this->ListBox1->TabIndex = 0;
      this->ListBox1->Text = "Press a key";
      this->ClientSize = System::Drawing::Size( 292, 266 );
      this->Controls->Add( this->ListBox1 );
      this->Name = "Form1";
      this->Text = "Form1";
      this->ResumeLayout( false );
      
      // Associate the event-handling method with the
      // KeyDown event.
      this->KeyDown += gcnew KeyEventHandler( this, &Form1::Form1_KeyDown );
   }


private:

   // The form will handle all key events before the control with  
   // focus handles them.  Show the keys pressed by adding the
   // KeyCode object to ListBox1. Ensure the processing is passed
   // to the control with focus by setting the KeyEventArg.Handled
   // property to false.
   void Form1_KeyDown( Object^ /*sender*/, KeyEventArgs^ e )
   {
      ListBox1->Items->Add( e->KeyCode );
      e->Handled = false;
   }

};


[System::STAThreadAttribute]
int main()
{
   Application::Run( gcnew Form1 );
}

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

Siehe auch

Referenz

Form-Klasse
Form-Member
System.Windows.Forms-Namespace
Control.KeyPress-Ereignis
Control.KeyDown-Ereignis
Control.KeyUp-Ereignis