I cannot capture the function keys F1..F12 for my application. I am able to capture regular keys and modifiers such as shift, ctrl, alt, etc..
This question recommends KeyPreview = True
, however that does not seem to work for my application. What am I doing wrong?
Private Sub Main_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.KeyPreview = True
AddHandler Me.KeyDown, AddressOf KeyDownsHandler
AddHandler Me.KeyUp, AddressOf KeyUpHandler
End Sub
Private Sub KeyUpHandler(ByVal o As Object, ByVal e As KeyEventArgs)
e.SuppressKeyPress = True
If e.KeyCode = Keys.F1 Then
txtMain.AppendText("F1 was pressed!" & Environment.NewLine)
End If
txtMain.AppendText( _
String.Format("'{0}' '{1}' '{2}' '{3}' {4}", e.Modifiers, e.KeyValue, e.KeyData, e.KeyCode, Environment.NewLine))
End Sub
Private Sub KeyDownHandler(ByVal o As Object, ByVal e As KeyEventArgs)
e.SuppressKeyPress = True
txtMain.AppendText( _
String.Format("'{0}' '{1}' '{2}' '{3}' {4}", e.Modifiers, e.KeyValue, e.KeyData, e.KeyCode, Environment.NewLine))
End Sub
Your code works for me with the exception that you have a typo in your EventHandler declaration. Change:
AddHandler Me.KeyDown, AddressOf KeyDownsHandler
to
AddHandler Me.KeyDown, AddressOf KeyDownHandler