다음을 통해 공유


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 값 중 하나입니다.

반환

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 및 위쪽 화살표, 아래쪽 화살표, 왼쪽 화살표 및 오른쪽 화살표 키가 포함됩니다.

적용 대상

추가 정보