Control.IsInputKey(Keys) 方法

定義

判斷指定的按鍵是標準輸入按鍵或需要前置處理的特殊按鍵。

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

參數

keyData
Keys

其中一個 Keys 值。

傳回

如果指定的按鍵是標準輸入按鍵,則為 true,否則為 false

範例

下列程式碼範例示範如何覆寫 IsInputKey 控制項的 TextBox 方法。 在此範例中,類別會 TabTextBox 處理 TAB 鍵。 TabTextBox當 具有焦點且使用者按下 TAB 鍵時,會在文字插入點新增 TAB 鍵四個空格,並取代任何選取的文字。 根據預設,控制項會將 TextBox 輸入焦點移至下一個控制項,以處理 TAB 鍵。 在此情況下,keypress 永遠不會到達 OnKeyDown 方法覆寫。 為避免此預設行為,當使用者按下 TAB 鍵時,方法 IsInputKey 覆寫會 true 傳回。 對於所有其他按鍵,方法 IsInputKey 覆寫會傳回呼叫 方法基類版本的結果。

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

備註

IsInputKey呼叫 方法,以判斷 參數所 keyData 指定的索引鍵是否為控制項想要的輸入索引鍵。 這個方法會在視窗訊息前置處理期間呼叫,以判斷指定的輸入索引鍵是否應該預先處理或直接傳送至控制項。 如果 IsInputKeytrue 回 ,則會將指定的索引鍵直接傳送至 控制項。 如果 IsInputKeyfalse 回 ,則會預處理指定的索引鍵,而且只有在前置處理階段未取用時才會傳送給控制項。 前置處理的索引鍵包括 TAB、RETURN、ESC 和向上鍵、向下鍵、向左鍵和向右鍵。

適用於

另請參閱