Search code examples
c#.netwinformskeystroke

How to intercept capture TAB key in WinForms application?


I'm trying to capture the Tab key in a Windows Forms application and do a custom action when it is pressed.

I have a Form with several listViews and buttons, I've set the Form's KeyPreview property to true and when I press any other key than tab, my KeyDown event handler does get called.

But that's not true with the Tab key - I don't receive WM_KEYDOWN message even in WndProc.

Do I need to set each control inside my form - its TabStop property - to false? There must be a more elegant way than that.

Thanks.


Solution

  • will this help you?

    Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
      Dim keyPressed As Keys = CType(msg.WParam.ToInt32(), Keys)
    
      Select Case keyPressed
        Case Keys.Right msgbox("Right Arrow Key Caught")
        Case Keys.Left msgbox("LeftArrow Key Caught")
        Case Keys.Up msgbox("Up Arrow Key Caught")
        Case Keys.Down msgbox("Down Arrow Key Caught")
        Case Else Return MyBase.ProcessCmdKey(msg, keyData)
      End Select
    End Function