在控件有焦點的情況下按下鍵時發生。
[Visual Basic]
Public Event KeyPress As KeyPressEventHandler
[C#]
public event KeyPressEventHandler KeyPress;
[C++]
public: __event KeyPressEventHandler* KeyPress;
[JScript] 在 JScript 中,可以處理由某個類定義的事件,但不能定義自己的事件。
事件數據
事件處理程序接收一個 KeyPressEventArgs 類型的參數,它包含與此事件相關的數據。下列 KeyPressEventArgs 屬性提供特定于此事件的信息。
備注
鍵事件按下列順序發生:
- KeyDown
- KeyPress
- KeyUp
非字符鍵不會引發 KeyPress 事件;但非字符鍵卻可以引發 KeyDown 和 KeyUp 事件。
要僅在窗體級別處理鍵盤事件并且不允許其他控件接收鍵盤事件,請將窗體的 KeyPress 事件處理方法中的 KeyPressEventArgs.Handled 屬性設置為 true。
有關處理事件的更多信息,請參見使用事件。
.NET Framework 精簡版平臺說明: 除了 Control 基類外,.NET Compact Framework 還支持具有 Service Pack 2 及更高版本的控件上的該事件。Smart Devices Developer Community(智能設備開發人員團體)Web 站點提供了有關可用 Service Pack 的信息,請參見 http://go.microsoft.com/fwlink/?LinkId=16561。
示例
[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()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()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++ 示例,請單擊頁左上角的“語言篩選器”按鈕
。
要求
平臺: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列
請參見
Control 類 | Control 成員 | System.Windows.Forms 命名空間 | OnKeyPress