Credo che il problema derivi dal fatto che la Form non registra l' evento keydown....spero di non dire una fesseria...ma ho inserito un 'console.writeline', come ha suggerito eziogsv, nella sub dell' evento in questione e con i quattro tasti "freccia" non scrive niente nell' output, il perchè non lo so.
Si potrebbe sostituire la sub "keydown" con questa funzione:
codice:
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
'37 = left
'39 = right
If keyData = 37 Then
Console.WriteLine("hai premuto il tasto: " & keyData.ToString)
End If
If keyData = 39 Then
Console.WriteLine("hai premuto il tasto: " & keyData.ToString)
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
che io di solito uso in controlli personalizzati per evitare l' inserimento di caratteri o funzioni come "ctrl+C", ecc. impostando 'msg = Nothing'. Però mettendo più controlli, ad esempio due button, e premendo le frecce il focus sui controlli si sposta ugualmente.
Quindi, o cambi i tasti nella tua sub o usi la funzione sopra con degli accorgimenti per evitare che dei controlli prendano il focus e possano causare inconvenienti.