Control.IsInputKey(Keys) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Bestimmt, ob es sich bei der angegebenen Taste um eine normale Eingabetaste handelt oder um eine Sondertaste, für die eine Vorverarbeitung erforderlich ist.
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
Parameter
Gibt zurück
true
, wenn die angegebene Taste eine normale Taste ist, andernfalls false
.
Beispiele
Im folgenden Codebeispiel wird gezeigt, wie Sie die IsInputKey Methode für ein TextBox Steuerelement außer Kraft setzen. In diesem Beispiel behandelt die TabTextBox
Klasse die TAB-TASTE. Wenn der TabTextBox
Fokus liegt und der Benutzer die TAB-TASTE drückt, werden vier Leerzeichen an der Texteinfügemarke hinzugefügt, indem alle markierten Texte ersetzt werden. Standardmäßig behandelt das TextBox Steuerelement die TAB-TASTE, indem der Eingabefokus auf das nächste Steuerelement verschoben wird. In diesem Fall erreicht die Keypress niemals die Außerkraftsetzung der OnKeyDown Methode. Um dieses Standardverhalten zu verhindern, gibt true
die IsInputKey Methode außer Kraft, wenn der Benutzer die TAB-TASTE drückt. Für alle anderen Keypressen gibt die IsInputKey Methode außer Kraft, das Ergebnis des Aufrufs der Basisklassenversion der Methode zurück.
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
Hinweise
Rufen Sie die IsInputKey Methode auf, um zu bestimmen, ob der vom keyData
Parameter angegebene Schlüssel ein Eingabeschlüssel ist, den das Steuerelement wünscht. Diese Methode wird während der Vorverarbeitung von Fensternachrichten aufgerufen, um zu bestimmen, ob der angegebene Eingabeschlüssel vorverarbeitet oder direkt an das Steuerelement gesendet werden soll. Wenn IsInputKey der Wert zurückgegeben true
wird, wird der angegebene Schlüssel direkt an das Steuerelement gesendet. Wenn IsInputKey der false
angegebene Schlüssel zurückgegeben wird, wird der angegebene Schlüssel vorverarbeitet und nur an das Steuerelement gesendet, wenn er nicht von der Vorverarbeitungsphase verwendet wird. Tasten, die vorverarbeitet werden, umfassen TAB-, RÜCKGABE-, ESC- und NACH-OBEN-, NACH-UNTEN-, NACH-LINKS- und NACH-RECHTS-TASTE.