vb.net Keydown event on whole form

前端 未结 2 2190
耶瑟儿~
耶瑟儿~ 2020-12-09 11:34

I have a form with several controls. I want to run a specific sub on keydown event regardless any controls event. I mean if user press Ctrl+S anywhere on form it execute a s

2条回答
  •  情深已故
    2020-12-09 12:16

    You should set the KeyPreview property on the form to True and handle the keydown event there

    When this property is set to true, the form will receive all KeyPress, KeyDown, and KeyUp events. After the form's event handlers have completed processing the keystroke, the keystroke is then assigned to the control with focus. .......... To handle keyboard events only at the form level and not allow controls to receive keyboard events, set the KeyPressEventArgs.Handled property in your form's KeyPress event handler to true.

    So, for example, to handle the Control+S key combination you could write this event handler for the form KeyDown event.

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
        If  e.Control AndAlso e.KeyCode = Keys.S then
            ' Call your sub method here  .....
            YourSubToCall()
    
            ' then prevent the key to reach the current control
            e.Handled = False 
        End If
    End Sub
    

提交回复
热议问题