Compartir vía


Control.IsInputKey(Keys) Método

Definición

Determina si la tecla especificada es una tecla de entrada normal o una tecla especial que requiere preprocesamiento.

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

Parámetros

keyData
Keys

Uno de los valores de Keys.

Devoluciones

true si la tecla especificada es una tecla de entrada normal; de lo contrario, false.

Ejemplos

En el ejemplo de código siguiente se muestra cómo invalidar el IsInputKey método para un TextBox control . En este ejemplo, la TabTextBox clase controla la tecla TAB. TabTextBox Cuando tiene el foco y el usuario presiona la tecla TAB cuatro espacios se agregan en el punto de inserción de texto, reemplazando cualquier texto seleccionado. De forma predeterminada, el TextBox control controla la tecla TAB moviendo el foco de entrada al siguiente control. En este caso, la tecla keypress nunca alcanza la invalidación del OnKeyDown método. Para evitar este comportamiento predeterminado, la invalidación del IsInputKey método devuelve true cuando el usuario presiona la tecla TAB. Para todos los demás keypresses, la IsInputKey invalidación del método devuelve el resultado de llamar a la versión de clase base del método.

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

Comentarios

Llame al IsInputKey método para determinar si la clave especificada por el keyData parámetro es una clave de entrada que el control desea. Se llama a este método durante el preprocesamiento de mensajes de ventana para determinar si la clave de entrada especificada debe preprocesarse o enviarse directamente al control. Si IsInputKey devuelve true, la clave especificada se envía directamente al control . Si IsInputKey devuelve false, la clave especificada se preprocesa y solo se envía al control si no la consume la fase de preprocesamiento. Las claves preprocesadas incluyen las teclas TAB, RETURN, ESC y FLECHA ARRIBA, FLECHA ABAJO, FLECHA IZQUIERDA y FLECHA DERECHA.

Se aplica a

Consulte también