添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
protected:
 virtual void OnKeyDown(System::Windows::Forms::KeyEventArgs ^ e);
protected virtual void OnKeyDown (System.Windows.Forms.KeyEventArgs e);
abstract member OnKeyDown : System.Windows.Forms.KeyEventArgs -> unit
override this.OnKeyDown : System.Windows.Forms.KeyEventArgs -> unit
Protected Overridable Sub OnKeyDown (e As KeyEventArgs)

下列程式碼範例會 KeyDown 使用 事件來判斷輸入控制項中的字元類型。

// 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; //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. 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; // 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; ' 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 'If shift key was pressed, it's not a number. If Control.ModifierKeys = Keys.Shift Then nonNumberEntered = true End If End Sub ' 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

引發事件會透過委派叫用此事件處理常式。 如需詳細資訊,請參閱 處理和引發事件

OnKeyDown 方法也允許衍生類別處理事件,而不用附加委派。 這是在衍生類別中處理事件的慣用技巧。

給繼承者的注意事項

當在衍生類別中覆寫 OnKeyDown(KeyEventArgs) 時,請確定呼叫基底類別的 OnKeyDown(KeyEventArgs) 方法,使已註冊的委派能接收到事件。