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 键四个空格时,将在文本插入点添加,替换任何选定的文本。 默认情况下,控件 TextBox 通过将输入焦点移动到下一个控件来处理 TAB 键。 在这种情况下,keypress 永远不会达到 OnKeyDown 方法重写。 为了防止此默认行为,当用户 IsInputKey 按下 TAB 键时,该方法重写将返回 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键是否为控件所需的输入键。 在窗口消息预处理期间调用此方法,以确定是应预处理指定的输入键还是直接发送到控件。 如果 IsInputKey 返回 true,则指定键将直接发送到控件。 如果 IsInputKey 返回 false,则预处理指定的键,并且仅当预处理阶段不使用该键时发送到控件。 预处理的键包括 TAB、RETURN、ESC 和向上键、向下键、向左键和向右键。

适用于

另请参阅