영어로 읽기

다음을 통해 공유


Control.KeyPress 이벤트

정의

컨트롤에 포커스가 있을 때 문자, 스페이스 또는 백스페이스 키를 누르면 발생합니다.

public event System.Windows.Forms.KeyPressEventHandler KeyPress;
public event System.Windows.Forms.KeyPressEventHandler? KeyPress;

이벤트 유형

예제

다음 코드 예제에서는 이벤트를 사용 하 여 KeyPress 문자가 컨트롤을 입력 하지 못하도록 합니다.

// Boolean flag used to determine when a character other than a number is entered.
private bool nonNumberEntered = false;

// Handle the KeyDown event to determine the type of character entered into the control.
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    // Initialize the flag to false.
    nonNumberEntered = false;

    // Determine whether the keystroke is a number from the top of the keyboard.
    if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
    {
        // Determine whether the keystroke is a number from the keypad.
        if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
        {
            // Determine whether the keystroke is a backspace.
            if(e.KeyCode != Keys.Back)
            {
                // A non-numerical keystroke was pressed.
                // Set the flag to true and evaluate in KeyPress event.
                nonNumberEntered = true;
            }
        }
    }
    //If shift key was pressed, it's not a number.
    if (Control.ModifierKeys == Keys.Shift) {
        nonNumberEntered = true;
    }
}

// This event occurs after the KeyDown event and can be used to prevent
// characters from entering the control.
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    // Check for the flag being set in the KeyDown event.
    if (nonNumberEntered == true)
    {
        // Stop the character from being entered into the control since it is non-numerical.
        e.Handled = true;
    }
}

다음 코드 예제에서는 상승 하는 KeyDown순서를 보여 줍니다는 , KeyUpKeyPress 이벤트, 또한 그들에 이벤트 처리기를 등록 하는 방법.

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
        textBox2.Multiline = true;
        textBox2.ScrollBars = ScrollBars.Both;

        //Setup events that listens on keypress
        textBox1.KeyDown += TextBox1_KeyDown;
        textBox1.KeyPress += TextBox1_KeyPress;
        textBox1.KeyUp += TextBox1_KeyUp;
    }

    // Handle the KeyUp event to print the type of character entered into the control.
    private void TextBox1_KeyUp(object sender, KeyEventArgs e)
    {
        textBox2.AppendText( $"KeyUp code: {e.KeyCode}, value: {e.KeyValue}, modifiers: {e.Modifiers}" + "\r\n");
    }

    // Handle the KeyPress event to print the type of character entered into the control.
    private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        textBox2.AppendText( $"KeyPress keychar: {e.KeyChar}" + "\r\n");
    }

    // Handle the KeyDown event to print the type of character entered into the control.
    private void TextBox1_KeyDown(object sender, KeyEventArgs e)
    {
        textBox2.AppendText( $"KeyDown code: {e.KeyCode}, value: {e.KeyValue}, modifiers: {e.Modifiers}" + "\r\n");
    }
}

설명

키 이벤트가 다음 순서 대로 발생합니다.

  1. KeyDown

  2. KeyPress

  3. KeyUp

KeyPress 이벤트는 공백 및 백스페이스 이외의 문자가 아닌 키에 의해 발생하지 않습니다. 그러나 문자가 아닌 키는 및 KeyUp 이벤트를 발생합니다KeyDown.

사용 된 KeyChar 샘플 키 입력을 런타임에 하 고 선택적으로 사용 하거나 공통 키 입력의 하위 집합을 수정 하는 속성입니다.

폼 수준에서만 키보드 이벤트를 처리하고 다른 컨트롤에서 키보드 이벤트를 수신할 수 없도록 하려면 폼의 KeyPress 이벤트 처리 메서드true에서 속성을 로 설정합니다KeyPressEventArgs.Handled.

이벤트 처리에 대한 자세한 내용은 이벤트 처리 및 발생 을 참조하십시오.

적용 대상

제품 버전
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

추가 정보