Sto scrivendo un programma in Visual Basic 2010, esattamente un programma che testa una tastiera. Alla pressione di un tasto sulla tastiera, la Q in questo caso, sulla tastiera simulata sul monitor si dovrà colorare solo la Q... ho scritto dunque questo codice

Public Class Form1


Private Sub KeyDownEventHandler(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
If e.KeyCode = Keys.Q Then
Button1.PerformClick()
End If
End Sub


Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
RemoveGlobalEventHandler(Me, "KeyDown", New KeyEventHandler(AddressOf KeyDownEventHandler))
End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddGlobalEventHandler(Me, "KeyDown", New KeyEventHandler(AddressOf KeyDownEventHandler))
End Sub


Private Sub AddGlobalEventHandler(ByVal container As Control,
ByVal eventName As String,
ByVal eventHandler As [Delegate])


If container IsNot Nothing Then
Dim controlType = container.GetType()
Dim eventInfo = controlType.GetEvent(eventName)
If eventInfo IsNot Nothing Then
eventInfo.AddEventHandler(container, eventHandler)
End If
For Each ctrl As Control In container.Controls
AddGlobalEventHandler(ctrl, eventName, eventHandler)
Next
End If
End Sub


Private Sub RemoveGlobalEventHandler(ByVal container As Control,
ByVal eventName As String,
ByVal eventHandler As [Delegate])


If container IsNot Nothing Then
Dim controlType = container.GetType()
Dim eventInfo = controlType.GetEvent(eventName)
If eventInfo IsNot Nothing Then
eventInfo.RemoveEventHandler(container, eventHandler)
End If
For Each ctrl As Control In container.Controls
AddGlobalEventHandler(ctrl, eventName, eventHandler)
Next
End If
End Sub


Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.ForeColor = System.Drawing.Color.Red




End Sub
End Class

Solo che quando vado a premere Q si colorano tutti i button! Potreste correggermelo?