Control.IsInputKey(Keys) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Avgör om den angivna nyckeln är en vanlig indatanyckel eller en särskild nyckel som kräver förbearbetning.
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
Parametrar
Returer
trueom den angivna nyckeln är en vanlig indatanyckel; annars . false
Exempel
I följande kodexempel visas hur du åsidosätter IsInputKey metoden för en TextBox kontroll. I det här exemplet TabTextBox hanterar klassen TAB-nyckeln.
TabTextBox När har fokus och användaren trycker på TAB-tangenten läggs fyra blanksteg till vid textinfogningspunkten, vilket ersätter valfri markerad text. Som standard TextBox hanterar kontrollen TAB-tangenten genom att flytta indatafokus till nästa kontroll. I det här fallet når keypress aldrig metodens åsidosättning OnKeyDown . För att förhindra det här standardbeteendet IsInputKey returnerar true metoden åsidosättning när användaren trycker på TAB-tangenten. För alla andra tangenttryck returnerar metodens åsidosättning IsInputKey resultatet av att anropa metodens basklassversion.
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
Kommentarer
IsInputKey Anropa metoden för att avgöra om nyckeln som anges av parametern keyData är en indatanyckel som kontrollen vill ha. Den här metoden anropas under förbearbetning av fönstermeddelanden för att avgöra om den angivna indatanyckeln ska förbearbetas eller skickas direkt till kontrollen. Om IsInputKey returnerar trueskickas den angivna nyckeln direkt till kontrollen. Om IsInputKey returnerar falseförbearbetas den angivna nyckeln och skickas endast till kontrollen om den inte förbrukas av förbearbetningsfasen. Nycklar som är förbearbetade inkluderar tangenterna TAB, RETURN, ESC och UP ARROW, DOWN ARROW, LEFT ARROW och RIGHT ARROW.The keys that are preprocessed include the TAB, RETURN, ESC, and the UP ARROW, DOWN ARROW, LEFT ARROW, and RIGHT ARROW keys.