Control.IsInputKey(Keys) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 키가 일반 입력 키인지 또는 전처리가 필요한 특수 키인지를 확인합니다.
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
매개 변수
반환
지정된 키가 일반 입력 키이면 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 및 위쪽 화살표, 아래쪽 화살표, 왼쪽 화살표 및 오른쪽 화살표 키가 포함됩니다.