Control.IsInputKey(Keys) Método

Definição

Determina se a chave especificada é uma chave de entrada regular ou uma chave especial que exige o pré-processamento.

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

Um dos valores de Keys.

Retornos

Boolean

true se a chave especificada for uma chave de entrada regular; caso contrário, false.

Exemplos

O exemplo de código a seguir mostra como substituir o IsInputKey método por um TextBox controle. Neste exemplo, a TabTextBox classe manipula a chave TAB. Quando o TabTextBox foco e o usuário pressiona a tecla TAB, quatro espaços são adicionados no ponto de inserção de texto, substituindo qualquer texto selecionado. Por padrão, o TextBox controle manipula a tecla TAB movendo o foco de entrada para o próximo controle. Nesse caso, o keypress nunca atinge a substituição do OnKeyDown método. Para evitar esse comportamento padrão, a substituição do IsInputKey método retorna true quando o usuário pressiona a tecla TAB. Para todas as outras teclas, a substituição do IsInputKey método retorna o resultado da chamada da versão da classe base do 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

Comentários

Chame o IsInputKey método para determinar se a chave especificada pelo keyData parâmetro é uma chave de entrada desejada pelo controle. Esse método é chamado durante o pré-processamento de mensagem de janela para determinar se a chave de entrada especificada deve ser pré-processada ou enviada diretamente ao controle. Se IsInputKey retornar true, a chave especificada será enviada diretamente para o controle. Se IsInputKey retorna false, a chave especificada é pré-processada e enviada apenas para o controle se não for consumida pela fase de pré-processamento. As chaves pré-processadas incluem as teclas TAB, RETURN, ESC e SETA PARA CIMA, SETA PARA BAIXO, SETA PARA A ESQUERDA e SETA PARA A DIREITA.

Aplica-se a

Confira também