title: KeyDown event not firing with .NET WinForms?
body: <p><em>I already have</em> <code>KeyPreview</code> <em>set to true in the form properties</em></p>
  
  <p>I'm working on a small program, and I'm having a problem where it seems that some of the controls on it inside groupboxes are not triggering the KeyDown event on my form when I press and release any arrow key, just the KeyUp event.  Is there something wrong with my code that might be causing this?</p>
  
  <p>Specifically, I've enabled KeyPreview on the form, and set breakpoints on <code>e.SuppressKeyPress = True</code> in both subroutines, and only the one for frmMain_KeyUp hits the breakpoint.</p>
  
  <p>I added in the two GroupBox events hoping that might mitigate the issue, but no such luck.  However, I have a custom control on the form that is specifically coded to ignore these keypresses, and the code works as expected on it.</p>
  
  <pre><code>  Private Sub frmMain_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown, GroupBox1.KeyDown, GroupBox2.KeyDown
        e.SuppressKeyPress = True
        Select Case e.KeyCode
            Case Keys.Left
                ScrollDir = ScrollDir Or 1
            Case Keys.Right
                ScrollDir = ScrollDir Or 2
            Case Keys.Down
                ScrollDir = ScrollDir Or 4
            Case Keys.Up
                ScrollDir = ScrollDir Or 8
            Case Else
                e.SuppressKeyPress = False
        End Select
        tScroll.Enabled = True
        tScroll_Tick(Nothing, Nothing)
    End Sub
  
    Private Sub frmMain_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp, GroupBox1.KeyUp, GroupBox2.KeyUp
  
        e.SuppressKeyPress = True
        Select Case e.KeyCode
            Case Keys.Left
                ScrollDir = ScrollDir And (Not 1)
            Case Keys.Right
                ScrollDir = ScrollDir And (Not 2)
            Case Keys.Down
                ScrollDir = ScrollDir And (Not 4)
            Case Keys.Up
                ScrollDir = ScrollDir And (Not 8)
            Case Else
                e.SuppressKeyPress = False
        End Select
        If ScrollDir = 0 Then tScroll.Enabled = False
    End Sub
  </code></pre>
  
  <p>The code in the user control that "ignores" keypresses is as such:</p>
  
  <pre><code>    Private Sub TileDropDown_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
          If e.KeyValue = 40 OrElse e.KeyValue = 38 OrElse e.KeyValue = 39 OrElse e.KeyValue = 37 Then
  
              e.SuppressKeyPress = True
          End If
      End Sub
  </code></pre>