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 перемещая фокус ввода на следующий элемент управления. В этом случае нажатие клавиши никогда не достигает OnKeyDown переопределения метода. Чтобы предотвратить это поведение по умолчанию, IsInputKey метод переопределяется true , когда пользователь нажимает клавишу TAB. Для всех остальных 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 и СТРЕЛКА ВВЕРХ, СТРЕЛКА ВНИЗ, СТРЕЛКА ВЛЕВО и СТРЕЛКА ВПРАВО.

Применяется к

См. также раздел