次の方法で共有


KeyPressEventHandler デリゲート

ControlKeyPress イベントを処理するメソッドを表します。

<Serializable>
Public Delegate Sub KeyPressEventHandler( _   ByVal sender As Object, _   ByVal e As KeyPressEventArgs _)
[C#]
[Serializable]
public delegate void KeyPressEventHandler(   object sender,   KeyPressEventArgs e);
[C++]
[Serializable]
public __gc __delegate void KeyPressEventHandler(   Object* sender,   KeyPressEventArgs* e);

[JScript] JScript では、.NET Framework のデリゲートを利用することができます。ただし、独自に定義することはできません。

パラメータ [Visual Basic, C#, C++]

作成するイベント ハンドラは、KeyPressEventHandler クラスのデリゲート定義と同一のパラメータを持つ必要があります。

  • sender
    イベントのソース。
  • e
    イベント データを格納している KeyPressEventArgs

解説

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

KeyPressEventHandler デリゲートを作成する場合は、イベントを処理するメソッドを識別してください。イベントをイベント ハンドラに関連付けるには、デリゲートのインスタンスをイベントに追加します。デリゲートを削除しない限り、そのイベントが発生すると常にイベント ハンドラが呼び出されます。デリゲートを使用したイベント処理の詳細については、「 イベントとデリゲート 」を参照してください。

使用例

 
Imports System
Imports System.Windows.Forms

Public Class Form1
    Inherits Form

    Public Sub New()
        ' Create a TextBox control.
        Dim tb As New TextBox()
        Me.Controls.Add(tb)
        AddHandler tb.KeyPress, AddressOf keypressed
    End Sub 'New

    Sub keypressed(ByVal o As [Object], ByVal e As KeyPressEventArgs)
        ' The keypressed method uses the KeyChar property to check 
        ' whether the ENTER key is pressed. 

        ' If the ENTER key is pressed, the Handled property is set to true, 
        ' to indicate the event is handled.

        If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then
            e.Handled = True
        End If
    End Sub 'keypressed

    Public Shared Sub Main()
        Application.Run(New Form1())
    End Sub 'Main
End Class 'Form1

[C#] 

using System;
using System.Windows.Forms;

public class Form1: Form
{
    public Form1()
    {
        // Create a TextBox control.
        TextBox tb = new TextBox();
        this.Controls.Add(tb);
        tb.KeyPress += new KeyPressEventHandler(keypressed);
    }

    void keypressed(Object o, KeyPressEventArgs e)
    {
        // The keypressed method uses the KeyChar property to check 
        // whether the ENTER key is pressed. 

        // If the ENTER key is pressed, the Handled property is set to true, 
        // to indicate the event is handled.
        if(e.KeyChar == (char)13)
            e.Handled=true;
    }

    public static void Main()
    {
        Application.Run(new Form1());
    }
}

[C++] 

#using <mscorlib.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>
using namespace System;
using namespace System::Windows::Forms;

public __gc class Form1: public Form
{
public:
    Form1()
    {
        // Create a TextBox control.
        TextBox* tb = new TextBox();
        this->Controls->Add(tb);
        tb->KeyPress += new KeyPressEventHandler(this,&Form1::keypressed);
    }

    void keypressed(Object* /*o*/, KeyPressEventArgs* e)
    {
        // The keypressed method uses the KeyChar property to check 
        // whether the ENTER key is pressed. 

        // If the ENTER key is pressed, the Handled property is set to true, 
        // to indicate the event is handled.
        if(e->KeyChar == (char)13)
            e->Handled=true;
    }

};

int main()
{
    Application::Run(new Form1());
}

[Visual Basic] 
' Boolean flag used to determine when a character other than a number is entered.
Private nonNumberEntered As Boolean = False
   
   
' Handle the KeyDown event to determine the type of character entered into the control.
Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) _
     Handles textBox1.KeyDown
    ' 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 OrElse e.KeyCode > Keys.D9 Then
        ' Determine whether the keystroke is a number from the keypad.
        If e.KeyCode < Keys.NumPad0 OrElse e.KeyCode > Keys.NumPad9 Then
            ' Determine whether the keystroke is a backspace.
            If e.KeyCode <> Keys.Back Then
                ' A non-numerical keystroke was pressed. 
                ' Set the flag to true and evaluate in KeyPress event.
                nonNumberEntered = True
            End If
        End If
    End If
End Sub 'textBox1_KeyDown
   
   
' This event occurs after the KeyDown event and can be used 
' to prevent characters from entering the control.
Private Sub textBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) _
    Handles textBox1.KeyPress
    ' Check for the flag being set in the KeyDown event.
    If nonNumberEntered = True Then
        ' Stop the character from being entered into the control since it is non-numerical.
        e.Handled = True
    End If
End Sub 'textBox1_KeyPress
End Class 'Form1 

[C#] 
// 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;
            }
        }
    }
}

// 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;
    }
}


[C++] 
// Boolean flag used to determine when a character other than a number is entered.
private:
bool nonNumberEntered;

// Handle the KeyDown event to determine the type of character entered into the control.
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;
         }
      }
   }
}

// This event occurs after the KeyDown event and can be used to prevent
// characters from entering the control.
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;
   }
}

[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 内)

参照

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