PDA

View Full Version : [VB.NET] Problema Key Down su Form con Tasti Frecce


jackk87
27-03-2010, 15:55
Buonasera a tutti,
ho settato la proprieta keypreview del form = true
con questo codice intercetto il keydown sul form:

Private Sub frmMain_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.Up
btSu.Image = My.Resources.frecciasu_P
Case Keys.Down
btGiu.Image = My.Resources.frecciagiu_P
Case Keys.Left
btSx.Image = My.Resources.frecciasx_P
Case Keys.Right
btDx.Image = My.Resources.frecciadx_P
Case Keys.R
MsgBox("Ciao")
End Select
End Sub


il codice funziona alla perfezione cioè se premo il tasto r mi visualizza ciao ma il tutto non funziona solo con i tasti delle frecce perchè se sul form utilizzo i tasti freccia mi sposta il tab cioè mi seleziona i controllo quindi fanno la stessa funzione del tasto tab di conseguenza non eseguono quello che gli imposto nel keydown come posso risolvere il problema?
grazie in anticipo a tutti :help:

MarcoGG
27-03-2010, 19:53
Ovviamente funziona solo se nessun controllo sul Form ha lo stato attivo :
Select Case e.KeyCode

Case Keys.Up
MsgBox("Freccia SU")
e.Handled = True

Case Keys.Down
MsgBox("Freccia GIU")
e.Handled = True

Case Keys.Left
MsgBox("Freccia SN")
e.Handled = True

Case Keys.Right
MsgBox("Freccia DX")
e.Handled = True

End Select
;)

jackk87
28-03-2010, 01:16
grazie Marco :D

jackk87
31-03-2010, 19:51
Ciao Marco,
un'altra domanda per esempio ho questo codice:

Select Case e.KeyCode

Case Keys.I
MsgBox("Freccia SU")
e.Handled = True

Case Keys.K
MsgBox("Freccia GIU")
e.Handled = True

Case Keys.J
MsgBox("Freccia SN")
e.Handled = True

Case Keys.L
MsgBox("Freccia DX")
e.Handled = True

End Select


come posso controllare che deve essere premuto un tasto alla volta?
per esempio se io tengo premuto il tasto I mi visualizza su e mentre ce l'ho premuto voglio che se schiacchio il tasto K non mi deve visualizzare giu perchè già tengo premuto un tasto.
Cioè vorrei che questo select nel keydown viene eseguito un tasto alla volta se ne ho premuto uno devo aspettare che lo lascio per far partire il comando di un'altro.
Spero di essere stato chiaro grazieeeeeeeeee :help:

jackk87
01-04-2010, 16:20
ho risolto inserendo qualche if :D