次の方法で共有


KeyPressEventArgs クラス

KeyPress イベントのデータを提供します。

この型のすべてのメンバの一覧については、KeyPressEventArgs メンバ を参照してください。

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

<ComVisible(True)>
Public Class KeyPressEventArgs   Inherits EventArgs
[C#]
[ComVisible(true)]
public class KeyPressEventArgs : EventArgs
[C++]
[ComVisible(true)]
public __gc class KeyPressEventArgs : public EventArgs
[JScript]
public
   ComVisible(true)
class KeyPressEventArgs extends EventArgs

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

KeyPressEventArgs は、ユーザーがキーを押すと作成される文字を指定します。たとえば、ユーザーが Shift キーを押しながら K キーを押した場合、 KeyChar プロパティは大文字の K を返します。

ユーザーがキーを押すと KeyPress イベントが発生します。 KeyPress イベントと密接に関連する 2 つのイベントは、 KeyUp イベントと KeyDown イベントです。ユーザーがキーを押すと KeyDown イベントが各 KeyPress イベントに先行して発生し、ユーザーがキーを離すと KeyUp イベントが発生します。ユーザーがキーを押し続けると、文字が繰り返されるたびに複製された KeyDown イベントと KeyPress イベントが発生します。キーを離すと KeyUp イベントが 1 つ発生します。

KeyPress イベントに伴い KeyPressEventArgs が渡されます。 KeyDown イベントと KeyUp イベントにおいて、それぞれ KeyEventArgs が渡されます。 KeyEventArgs は、他のキーと共に任意の修飾子キー (Ctrl、Shift、または Alt) が押されたかどうかを指定します。(この修飾子情報は、 Control クラスの ModifierKeys プロパティからも取得できます。)

Handledtrue に設定して KeyPress イベントをキャンセルします。この結果、コントロールはキーを押す処理を行いません。

イベント モデルの詳細については、「 イベントとデリゲート 」を参照してください。

.NET Compact Framework - Windows CE .NET プラットフォームに関する注意点: Ctrl + Shift キーの組み合わせの KeyPress イベントはありません。この場合は、KeyDown イベントおよび KeyUp イベントをトラップしてください。

使用例

[Visual Basic, C#, C++] キーが押された回数を KeyPressEventArgs を使用してカウントし、そのキーを押した結果を表示する方法を次の例に示します。表示後は、 Handled を true に設定し、オペレーティング システムによるキーの処理が行われないようにします。この例は、フォームに TextBox が配置されていることを前提にしています。

 
Public Class myKeyPressClass
    Private Shared keyPressCount As Long = 0
    Private Shared backspacePressed As Long = 0
    Private Shared returnPressed As Long = 0
    Private Shared escPressed As Long = 0
    Private textBox1 As TextBox
    
    Private Sub myKeyCounter(sender As Object, ex As KeyPressEventArgs)
        Select Case ex.KeyChar
            ' Counts the backspaces.
            Case ControlChars.Back
                backspacePressed = backspacePressed + 1
            ' Counts the ENTER keys.
            Case ControlChars.Lf
                returnPressed = returnPressed + 1
            ' Counts the ESC keys.  
            Case Convert.ToChar(27)
                escPressed = escPressed + 1
            ' Counts all other keys.
            Case Else
                keyPressCount = keyPressCount + 1
        End Select
        
        textBox1.Text = backspacePressed & " backspaces pressed" & _
            ControlChars.Lf & ControlChars.Cr & escPressed & _
            " escapes pressed" & ControlChars.CrLf & returnPressed & _
            " returns pressed" & ControlChars.CrLf & keyPressCount & _
            " other keys pressed" & ControlChars.CrLf
        ex.Handled = True
    End Sub 'myKeyCounter
End Class 'myKeyPressClass

[C#] 
public class myKeyPressClass 
 {
     static long keyPressCount = 0 ;
     static long backspacePressed =  0;
     static long returnPressed = 0 ;
     static long escPressed = 0 ;
     private TextBox textBox1 = new TextBox();
     private 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 = 
         backspacePressed + " backspaces pressed\r\n" + 
         escPressed + " escapes pressed\r\n" +
         returnPressed + " returns pressed\r\n" +
         keyPressCount + " other keys pressed\r\n" ;
     ex.Handled = true ;
     }
 }

[C++] 
public __gc class myKeyPressClass 
 {
     static long keyPressCount = 0 ;
     static long backspacePressed =  0;
     static long returnPressed = 0 ;
     static long escPressed = 0 ;
private:
     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( __box(backspacePressed), S" backspaces pressed\r\n", __box(escPressed), S" escapes pressed\r\n",
             returnPressed, S" returns pressed\r\n", keyPressCount, S" other keys pressed\r\n" ) ;
     ex->Handled = true ;
     }
 };

[Visual Basic, C#, C++] このクラスの新しいインスタンスを作成する必要があります。また、イベント ハンドラも設定する必要があります。イベント ハンドラは、クラスのコンストラクタで設定できます。

 
Private myKeyPressHandler As New myKeyPressClass()

Public Sub New()
    InitializeComponent()
    
    AddHandler textBox1.KeyPress, AddressOf myKeyPressHandler.myKeyCounter
End Sub 'New


[C#] 
myKeyPressClass myKeyPressHandler = new myKeyPressClass();
public Form1()
{
     InitializeComponent();
 
     textBox1.KeyPress += new KeyPressEventHandler(myKeyPressHandler.myKeyCounter);
}

[C++] 
myKeyPressClass* myKeyPressHandler;
public:
Form1()
{
     myKeyPressHandler = new myKeyPressClass();
     InitializeComponent();
 
     textBox1->KeyPress += new KeyPressEventHandler(myKeyPressHandler, &myKeyPressClass::myKeyCounter);
}

[Visual Basic, C#, C++] 指定されたイベントがコントロール内で発生した場合、結び付けられたメソッドが呼び出され、アプリケーションがイベントに応答するコードを実行できます。

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Windows.Forms

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)

参照

KeyPressEventArgs メンバ | System.Windows.Forms 名前空間 | OnKeyPress | KeyPress | KeyEventArgs | OnKeyDown | KeyDown | OnKeyUp | KeyUp | ModifierKeys