Auf Englisch lesen

Freigeben über


Form.KeyPreview Eigenschaft

Definition

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.

public bool KeyPreview { get; set; }

Eigenschaftswert

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

Beispiele

Im folgenden Beispiel wird das Festlegen der Eigenschaft eines Formulars KeyPreview auf TRUE und die Behandlung der Schlüsselereignisse auf Formularebene veranschaulicht. Fügen Sie zum Ausführen des Beispiels den folgenden Code in ein leeres Formular ein.

using System.Windows.Forms;

public class Form1 :
    System.Windows.Forms.Form

// Declare the controls contained on the form.
{
    private MyMnemonicButton button1;
    internal System.Windows.Forms.ListBox ListBox1;

    public Form1() : base()
    {
        // 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 = new MyMnemonicButton();
        button1.Text = "&Click";
        button1.Location = new System.Drawing.Point(100, 120);
        this.Controls.Add(button1);

        // Initialize a ListBox control and the form itself.
        this.ListBox1 = new System.Windows.Forms.ListBox();
        this.SuspendLayout();
        this.ListBox1.Location = new System.Drawing.Point(8, 8);
        this.ListBox1.Name = "ListBox1";
        this.ListBox1.Size = new System.Drawing.Size(120, 95);
        this.ListBox1.TabIndex = 0;
        this.ListBox1.Text = "Press a key";
        this.ClientSize = new 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 += new KeyEventHandler(Form1_KeyDown);
    }

    // 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.
    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        ListBox1.Items.Add(e.KeyCode);
        e.Handled = false;
    }

    [System.STAThreadAttribute]
    public static void Main()
    {
        Application.Run(new Form1());
    }
}

// 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.  
public class MyMnemonicButton : Button
{
    // This method makes sure the control is selectable and the 
    // mneumonic is correct before displaying the message box
    // and triggering the click event.
    protected override 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;
    }
}

Hinweise

Wenn diese Eigenschaft auf truefestgelegt ist, empfängt das Formular alle KeyPressEreignisse , KeyDownund KeyUp . Nachdem die Ereignishandler des Formulars die Verarbeitung der Tastatureingabe abgeschlossen haben, wird die Tastatureingabe dem Steuerelement mit Fokus zugewiesen. Wenn die KeyPreview -Eigenschaft beispielsweise auf true festgelegt ist und das aktuell ausgewählte Steuerelement ein TextBoxist, erhält das Steuerelement die gedrückte Taste, nachdem die Tastatureingabe von den Ereignishandlern des Formulars TextBox behandelt wurde. Legen Sie KeyPressEventArgs.Handled die -Eigenschaft im Ereignishandler Ihres Formulars KeyPress auf truefest, um Tastaturereignisse nur auf Formularebene zu behandeln und nicht zuzulassen, dass Steuerelemente Tastaturereignisse empfangen.

Sie können diese Eigenschaft verwenden, um die meisten Tastatureingaben in Ihrer Anwendung zu verarbeiten und entweder die Tastatureingabe zu behandeln oder das entsprechende Steuerelement zum Behandeln der Tastatureingabe aufzurufen. Wenn eine Anwendung beispielsweise Funktionstasten verwendet, sollten Sie die Tastatureingaben auf Formularebene verarbeiten, anstatt Code für jedes Steuerelement zu schreiben, das Möglicherweise Tastatureingabeereignisse empfängt.

Hinweis

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

Hinweis

Ein Steuerelement auf einem Formular kann so programmiert werden, dass es alle Tastatureingaben abbricht, die es empfängt. Da das Steuerelement diese Tastatureingaben nie an das Formular sendet, werden sie im Formular nie angezeigt, unabhängig von der Einstellung von KeyPreview.

Gilt für:

Produkt Versionen
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Weitere Informationen