次の方法で共有


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 値のいずれか 1 つ。

戻り値

Boolean

指定されているキーが通常の入力キーである場合は true。それ以外の場合は false

次のコード例は、コントロールのメソッドをオーバーライドする IsInputKey 方法を TextBox 示しています。 この例では、クラスは TabTextBox TAB キーを処理します。 フォーカスがあり TabTextBox 、ユーザーが Tab キーを押すと、テキストの挿入ポイントに 4 つのスペースが追加され、選択したテキストが置き換えられます。 既定では、コントロールは 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 指定されたキーが、コントロールが必要とする入力キーであるかどうかを判断します。 このメソッドは、ウィンドウ メッセージの前処理中に呼び出され、指定した入力キーを前処理するか、コントロールに直接送信するかを判断します。 返されたtrue場合IsInputKey、指定したキーがコントロールに直接送信されます。 戻り値がfalse返された場合IsInputKey、指定したキーは前処理され、前処理フェーズで使用されない場合にのみコントロールに送信されます。 前処理されたキーには、TAB キー、RETURN キー、ESC キー、上方向キー、下方向キー、左方向キー、および右方向キーが含まれます。

適用対象

こちらもご覧ください