Control.IsInputKey(Keys) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
Retornos
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.