다음을 통해 공유


KeyPressEventArgs 클래스

KeyPress 이벤트에 대한 데이터를 제공합니다.

네임스페이스: System.Windows.Forms
어셈블리: System.Windows.Forms(system.windows.forms.dll)

구문

‘선언
<ComVisibleAttribute(True)> _
Public Class KeyPressEventArgs
    Inherits EventArgs
‘사용 방법
Dim instance As KeyPressEventArgs
[ComVisibleAttribute(true)] 
public class KeyPressEventArgs : EventArgs
[ComVisibleAttribute(true)] 
public ref class KeyPressEventArgs : public EventArgs
/** @attribute ComVisibleAttribute(true) */ 
public class KeyPressEventArgs extends EventArgs
ComVisibleAttribute(true) 
public class KeyPressEventArgs extends EventArgs

설명

KeyPressEventArgs는 사용자가 키를 누를 때 구성되는 문자를 지정합니다. 예를 들어, 사용자가 Shift+K를 누르면 KeyChar 속성은 대문자 K를 반환합니다.

KeyPress 이벤트는 사용자가 키를 누를 때 발생합니다. KeyPress 이벤트와 밀접하게 관련된 두 이벤트는 KeyUpKeyDown입니다. KeyDown 이벤트는 사용자가 키를 누를 때 각 KeyPress 이벤트보다 먼저 발생하며 KeyUp 이벤트는 사용자가 키를 놓을 때 발생합니다. 사용자가 키를 누른 경우 문자를 반복할 때마다 KeyDownKeyPress 이벤트가 중복 발생하며 키를 놓자마자 KeyUp 이벤트가 한 번 발생합니다.

KeyPressEventArgs가 각 KeyPress 이벤트와 함께 전달됩니다. KeyEventArgs는 각 KeyDownKeyUp 이벤트와 함께 전달됩니다. KeyEventArgs는 보조키(Ctrl, Shift, 또는 Alt)를 다른 키와 함께 눌렀는지 여부를 지정합니다. 이 보조키 정보는 Control 클래스의 ModifierKeys 속성을 통해 얻을 수도 있습니다.

KeyPress 이벤트를 취소하려면 Handledtrue로 설정합니다. 이렇게 하면 컨트롤이 키 누름을 처리하지 않습니다.

참고

일부 컨트롤은 KeyDown에서 특정 키 입력을 처리합니다. 예를 들어, RichTextBoxKeyPress가 호출되기 전에 Enter 키를 처리합니다. 이러한 경우, KeyPress 이벤트를 취소할 수 없고 대신 KeyDown에서 키 입력을 취소해야 합니다.

이벤트 모델에 대한 자세한 내용은 이벤트 및 대리자를 참조하십시오.

예제

다음 예제에서는 KeyPressEventArgs를 사용하여 누른 키의 개수를 계산하고 각 키의 누른 결과를 표시합니다. 그런 다음 운영 체제에서 키를 더 이상 처리되지 않도록 Handled를 true로 설정합니다. 이 예제에서는 폼에 TextBox가 배치된 것으로 가정합니다.

public ref class myKeyPressClass
{
private:
   static long keyPressCount = 0;
   static long backspacePressed = 0;
   static long returnPressed = 0;
   static long escPressed = 0;
   TextBox^ textBox1;
   void myKeyCounter( Object^ sender, KeyPressEventArgs^ ex )
   {
      switch ( ex->KeyChar )
      {
            // Counts the backspaces.
         case '\b':
         backspacePressed = backspacePressed + 1;
         break;

            // Counts the ENTER keys.
         case '\r':
         returnPressed = returnPressed + 1;
         break;

            // Counts the ESC keys.  
         case (char)27:
         escPressed = escPressed + 1;
         break;
            
            // Counts all other keys.
         default:
         keyPressCount = keyPressCount + 1;
         break;
      }
      textBox1->Text = String::Concat( 
         backspacePressed, " backspaces pressed\r\n",
         escPressed, " escapes pressed\r\n",
         returnPressed, " returns pressed\r\n",
         keyPressCount, " other keys pressed\r\n" );
      ex->Handled = true;
   }
};
public class MyKeyPressClass
{
    private static long keyPressCount = 0;
    private static long backspacePressed = 0;
    private static long returnPressed = 0;
    private static long escPressed = 0;
    private TextBox textBox1 =  new TextBox();
   
    private void MyKeyCounter(Object sender, KeyPressEventArgs ex)
    {
        switch(ex.get_KeyChar()) {
            // Counts the backspaces.
            case 'b' : 
                backspacePressed = backspacePressed + 1;
                break;
            // Counts the ENTER keys.
            case 'r' : 
                returnPressed = returnPressed + 1;
                break;
            // Counts the ESC keys.  
            case (char)(27) : 
                escPressed = escPressed + 1;
                break;
            default : 
                // Counts all other keys.
                keyPressCount = keyPressCount + 1;
                break;
        }
      
        textBox1.set_Text(backspacePressed + " backspaces pressed\r\n"
            + escPressed + " escapes pressed\r\n" + returnPressed
            + " returns pressed\r\n"+keyPressCount + " other keys pressed\r\n");
        ex.set_Handled(true);
    } //MyKeyCounter
} //MyKeyPressClass

이 클래스의 새 인스턴스를 만들어야 합니다. 또한 이벤트 처리기를 설정해야 합니다. 클래스에 대한 생성자에서 이 작업을 할 수 있습니다.

public:
   myKeyPressClass^ myKeyPressHandler;

   Form1()
   {
      myKeyPressHandler = gcnew myKeyPressClass;

      InitializeComponent();

      textBox1->KeyPress += gcnew KeyPressEventHandler(
         myKeyPressHandler, &myKeyPressClass::myKeyCounter );
   }
private MyKeyPressClass myKeyPressHandler = new MyKeyPressClass();
public Form1()
{
    InitializeComponent();
    textBox1.add_KeyPress(new KeyPressEventHandler(myKeyPressHandler.
        MyKeyCounter));
} //Form1

지정된 이벤트가 컨트롤에서 발생하면 연결된 메서드가 호출되며 이벤트에 대한 응답으로서 응용 프로그램이 코드를 실행할 수 있습니다.

상속 계층 구조

System.Object
   System.EventArgs
    System.Windows.Forms.KeyPressEventArgs

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

KeyPressEventArgs 멤버
System.Windows.Forms 네임스페이스
OnKeyPress
Control.KeyPress 이벤트
KeyEventArgs 클래스
Control.KeyDown 이벤트
Control.KeyUp 이벤트
Control.ModifierKeys 속성