Control.IsInputKey(Keys) Metoda

Definicja

Określa, czy określony klucz jest zwykłym kluczem wejściowym, czy specjalnym kluczem wymagającym przetwarzania wstępnego.Determines whether the specified key is a regular input key or a special key that requires preprocessing.

protected:
 virtual bool IsInputKey(System::Windows::Forms::Keys keyData);
protected virtual bool IsInputKey (System.Windows.Forms.Keys keyData);
abstract member IsInputKey : System.Windows.Forms.Keys -> bool
override this.IsInputKey : System.Windows.Forms.Keys -> bool
Protected Overridable Function IsInputKey (keyData As Keys) As Boolean

Parametry

keyData
Keys

Jedna z Keys wartości.One of the Keys values.

Zwraca

Boolean

true Jeśli określony klucz jest zwykłym kluczem wejściowym; w przeciwnym razie false .true if the specified key is a regular input key; otherwise, false.

Przykłady

Poniższy przykład kodu pokazuje, jak zastąpić IsInputKey metodę dla TextBox kontrolki.The following code example shows you how to override the IsInputKey method for a TextBox control. W tym przykładzie TabTextBox Klasa obsługuje klawisz Tab.In this example, the TabTextBox class handles the TAB key. Gdy TabTextBox ma fokus, a użytkownik naciśnie klawisz Tab cztery spacje są dodawane w punkcie wstawiania tekstu, zastępując dowolny zaznaczony tekst.When the TabTextBox has the focus and the user presses the TAB key four spaces are added at the text insertion point, replacing any selected text. Domyślnie TextBox kontrolka obsługuje klawisz Tab, przenosząc fokus wprowadzania do następnej kontrolki.By default, the TextBox control handles the TAB key by moving the input focus to the next control. W takim przypadku naciśnięcie nigdy nie osiągnie OnKeyDown metody override.In this case, the keypress never reaches the OnKeyDown method override. Aby uniknąć tego zachowania domyślnego, IsInputKey Metoda przesłania zwraca wartość, true gdy użytkownik NACIŚNIE klawisz Tab.To prevent this default behavior, the IsInputKey method override returns true when the user presses the TAB key. W przypadku wszystkich innych klawiszy IsInputKey przesłonięcie metody zwraca wynik wywołania klasy bazowej metody.For all other keypresses, the IsInputKey method override returns the result of calling the base-class version of the method.

using System.Windows.Forms;

public class Form1 : Form
{
    public Form1()
    {
        FlowLayoutPanel panel = new FlowLayoutPanel();

        TabTextBox tabTextBox1 = new TabTextBox();
        tabTextBox1.Text = "TabTextBox";
        panel.Controls.Add(tabTextBox1);

        TextBox textBox1 = new TextBox();
        textBox1.Text = "Normal TextBox";
        panel.Controls.Add(textBox1);

        this.Controls.Add(panel);
    }
}

class TabTextBox : TextBox
{
    protected override bool IsInputKey(Keys keyData)
    {
        if (keyData == Keys.Tab)
        {
            return true;
        }
        else
        {
            return base.IsInputKey(keyData);
        }
    }

    protected override void OnKeyDown(KeyEventArgs e)
    {
        if (e.KeyData == Keys.Tab)
        {
            this.SelectedText = "    ";                
        }
        else
        {
            base.OnKeyDown(e);
        }
    }
}
Imports System.Windows.Forms

Public Class Form1
    Inherits Form

    Public Sub New()

        Dim panel As New FlowLayoutPanel()

        Dim tabTextBox1 As New TabTextBox()
        tabTextBox1.Text = "TabTextBox"
        panel.Controls.Add(tabTextBox1)

        Dim textBox1 As New TextBox()
        textBox1.Text = "Normal TextBox"
        panel.Controls.Add(textBox1)

        Me.Controls.Add(panel)

    End Sub

End Class

Class TabTextBox
    Inherits TextBox

    Protected Overrides Function IsInputKey( _
        ByVal keyData As System.Windows.Forms.Keys) As Boolean

        If keyData = Keys.Tab Then
            Return True
        Else
            Return MyBase.IsInputKey(keyData)
        End If

    End Function

    Protected Overrides Sub OnKeyDown( _
        ByVal e As System.Windows.Forms.KeyEventArgs)

        If e.KeyData = Keys.Tab Then
            Me.SelectedText = "    "
        Else
            MyBase.OnKeyDown(e)
        End If

    End Sub

End Class

Uwagi

Wywołaj IsInputKey metodę, aby określić, czy klucz określony przez keyData parametr jest kluczem wejściowym, którego potrzebuje formant.Call the IsInputKey method to determine whether the key specified by the keyData parameter is an input key that the control wants. Ta metoda jest wywoływana podczas przetwarzania wstępnego komunikatów systemu Windows w celu ustalenia, czy określony klucz wejściowy powinien zostać wstępnie przetworzony lub wysłany bezpośrednio do kontrolki.This method is called during window message preprocessing to determine whether the specified input key should be preprocessed or sent directly to the control. Jeśli IsInputKey zwraca true , określony klucz jest wysyłany bezpośrednio do kontrolki.If IsInputKey returns true, the specified key is sent directly to the control. Jeśli IsInputKey zwraca false , określony klucz jest wstępnie przetworzony i wysyłany tylko do formantu, jeśli nie jest używany przez fazę przetwarzania wstępnego.If IsInputKey returns false, the specified key is preprocessed and only sent to the control if it is not consumed by the preprocessing phase. Wstępnie przetworzone klucze obejmują tabulator, RETURN, ESC i strzałkę w górę, strzałkę w dół, strzałkę w lewo i klawisze strzałek w prawo.Keys that are preprocessed include the TAB, RETURN, ESC, and the UP ARROW, DOWN ARROW, LEFT ARROW, and RIGHT ARROW keys.

Dotyczy

Zobacz też