Control.IsInputKey(Keys) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Bepaalt of de opgegeven sleutel een reguliere invoersleutel of een speciale sleutel is waarvoor vooraf moet worden verwerkt.
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
Parameters
Retouren
true als de opgegeven sleutel een gewone invoersleutel is; anders, false.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u de IsInputKey methode voor een TextBox besturingselement overschrijft. In dit voorbeeld verwerkt de TabTextBox klasse de TAB-toets. Wanneer de TabTextBox focus heeft en de gebruiker op tabtoets drukt, worden er vier spaties toegevoegd aan de invoegpositie van de tekst, waarbij alle geselecteerde tekst wordt vervangen. Standaard verwerkt het TextBox besturingselement de TAB-toets door de invoerfocus naar het volgende besturingselement te verplaatsen. In dit geval bereikt de toetsdruk nooit de OnKeyDown methode overschrijven. Om dit standaardgedrag te voorkomen, wordt de IsInputKey methode overschrijven geretourneerd true wanneer de gebruiker op de Tab-toets drukt. Voor alle andere toetsdrukken retourneert de IsInputKey methode-onderdrukking het resultaat van het aanroepen van de basisklasseversie van de methode.
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
Opmerkingen
Roep de IsInputKey methode aan om te bepalen of de sleutel die is opgegeven door de keyData parameter een invoersleutel is die het besturingselement wil. Deze methode wordt aangeroepen tijdens het vooraf verwerken van vensterberichten om te bepalen of de opgegeven invoersleutel vooraf moet worden verwerkt of rechtstreeks naar het besturingselement moet worden verzonden. Als IsInputKey deze retourneert, wordt de opgegeven sleutel rechtstreeks naar het besturingselement verzonden true. Als IsInputKey deze retourneert false, wordt de opgegeven sleutel vooraf verwerkt en alleen verzonden naar het besturingselement als deze niet wordt gebruikt door de voorverwerkingsfase. Toetsen die vooraf zijn verwerkt, zijn onder andere tab, RETURN, ESC en de toetsen Pijl-omhoog, Pijl-omlaag, Pijl-links en Pijl-rechts.