Udostępnij za pośrednictwem


Control.IsInputKey(Keys) Metoda

Definicja

Określa, czy określony klucz jest zwykłym kluczem wejściowym, czy specjalnym kluczem, który wymaga wstępnego przetwarzania.

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.

Zwraca

true jeśli określony klucz jest zwykłym kluczem wejściowym; w przeciwnym razie , false.

Przykłady

Poniższy przykład kodu pokazuje, jak zastąpić IsInputKey metodę kontrolki TextBox . W tym przykładzie TabTextBox klasa obsługuje klucz TAB. Gdy element TabTextBox ma fokus, a użytkownik naciska klawisz TAB cztery spacje są dodawane w punkcie wstawiania tekstu, zastępując dowolny zaznaczony tekst. Domyślnie kontrolka TextBox obsługuje klawisz TAB, przenosząc fokus danych wejściowych do następnej kontrolki. W takim przypadku klawisz keypress nigdy nie osiąga OnKeyDown przesłonięcia metody. Aby zapobiec temu domyślnemu zachowaniu, IsInputKey metoda zastępuje polecenie true , gdy użytkownik naciska klawisz TAB. W przypadku wszystkich pozostałych IsInputKey klawiszy przesłonięcia metoda zwraca wynik wywołania wersji klasy bazowej metody.

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 metodę, IsInputKey aby określić, czy klucz określony przez keyData parametr jest kluczem wejściowym, którego chce kontrolka. Ta metoda jest wywoływana podczas przetwarzania wstępnego komunikatu okna w celu określenia, czy określony klucz wejściowy powinien być wstępnie przetworzony, czy wysyłany bezpośrednio do kontrolki. Jeśli IsInputKey zwraca truewartość , określony klucz jest wysyłany bezpośrednio do kontrolki. Jeśli IsInputKey zwraca falsewartość , określony klucz jest wstępnie przetworzony i wysyłany tylko do kontrolki, jeśli nie jest używany przez fazę przetwarzania wstępnego. Klucze, które są wstępnie przetworzone, obejmują KLAWISZ TAB, RETURN, ESC i STRZAŁKA W GÓRĘ, STRZAŁKA W DÓŁ, STRZAŁKA W LEWO i KLAWISZE STRZAŁKI W PRAWO.

Dotyczy

Zobacz też