Control.IsInputKey(Keys) Metod

Definition

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

keyData
Keys

Ett av Keys värdena.

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.

Gäller för

Se även