Raccourci clavier pour les fleche ne fonctionne pas?

Résolu
blade196 Messages postés 14 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 2 juillet 2010 - 28 juin 2010 à 12:24
blade196 Messages postés 14 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 2 juillet 2010 - 2 juil. 2010 à 15:43
bonjour,
je cherche a gérer un raccourcis clavier sur les flèches gauche et droite afin de faire défiler des image dans une pictureBox


    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        versionLab.Focus()
               Select Case e.KeyCode
            Case Windows.Forms.Keys.Left
                precBt_Click(sender, e)
            Case Windows.Forms.Keys.Right
                SuivBt_Click(sender, e)
        End Select
    End Sub

je fais aussi Me.KeyPreview = True lors du lancement de la form. je passe bien dans cette méthode avec les lettres et les chiffres de mon clavier mais avec les flèches, je me déplace dans la form et change le focus et je ne déclenche pas l'évènement
quelqu'un aurai il une solution pour pouvoir utiliser les flech comme raccourcis clavier?
merci d'avance

8 réponses

cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
28 juin 2010 à 23:13
Bonsoir,
cela semble normal selon le lien suivant :
http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.windowsforms/topic34742.aspx
J'ai fait un essai et cela semble répondre à la demande.
N'étant pas programmeur, avis aux spécialistes.
Voici le code pour un formulaire de base :

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Application.AddMessageFilter(New TestMessageFilter())
    End Sub
    Public Class TestMessageFilter
        Implements IMessageFilter

        Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean _
        Implements System.Windows.Forms.IMessageFilter.PreFilterMessage
            Const WM_KEYDOWN As Integer = &H100

            If m.Msg = WM_KEYDOWN Then
                Dim keyCode As Keys = CType(m.WParam, Keys) And Keys.KeyCode
                Select Case keyCode
                    Case Windows.Forms.Keys.Left
                        MessageBox.Show("Touche gauche")
                        'test sur une image (Ca marche)
                        Form1.precBt.PerformClick()
                    Case Windows.Forms.Keys.Right
                        MessageBox.Show("Touche droite")
                End Select

            End If
            Return False
        End Function
    End Class
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
28 juin 2010 à 13:24
Salut
C'est surement dans KeyPress et pas KeyDown

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
blade196 Messages postés 14 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 2 juillet 2010
28 juin 2010 à 13:41
merci pour ta réponse jack, malheureusement l'appui sur l'un de flèches ne déclenche toujours pas l'évènement alors que les lettres et chiffres le déclenche bien
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
28 juin 2010 à 16:14
Je viens de refaire l'essai avec KeyDown et cela fonctionne (et pas KeyPress comme je te le disais).
J'ai bien un retour de :
27 Gauche
38 Haut
39 Droite
40 Bas

Bien entendu, il faut que la fenêtre ait le focus pour recevoir quelque chose !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
28 juin 2010 à 16:18
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As ...
        Select Case e.KeyCode
            Case Keys.Left : Debug.Print("Left")
            Case Keys.Up : Debug.Print("Up")
            Case Keys.Right : Debug.Print("Right")
            Case Keys.Down : Debug.Print("Down")
        End Select
    End Sub
0
blade196 Messages postés 14 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 2 juillet 2010
28 juin 2010 à 16:41
arf étrange, l'appuie sur une flèche ne déclenche pas l'évènement chez moi, mais les autres touches, il n'y a pas de problème.

sais on jamais, peut etre n'avons nous pas testé dans le même contexte. j'ai le problème dans une appli window form vb net.
le problème se situe dans une form que je crée lors de l'appui sur un bouton. normalement elle recuperer par défaut le focus mais j'ai quand même testé les me.activate et me.focus mais cela n'apporte aucune solution. par défaut le focus se met sur l'un des boutons de la form, peu importe a quel élément je donne le focus, le problème pourrai peut être venir de la?

j'ai mis un point d'arrêt dans le méthode form1_keydown et j'y passe bien lors de l'appui sur une lettre ou un chiffre par exemple mais pas lors de l'appui sur une des flèches

voila, je ne voi pas quoi préciser de plus.

quoi qu'il en soi merci pour tes réponses, sa motive toujours pour continuer à chercher
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
28 juin 2010 à 18:24
L'essai que j'ai fait était sur une forme comportant aussi :
- des boutons
- des ComboBox
- des ListBox
- une TextBox
- un Label
- une DataGridView
Bref, rien de particulier.

As-tu essayé sur un projet tout neuf ?

"dans une form que je crée lors de l'appui sur un bouton"
Es-tu sûr que les procédures évènementielles aient été crées ?
Tu es sûr de regarder la bonne forme ?
0
blade196 Messages postés 14 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 2 juillet 2010
2 juil. 2010 à 15:43
merci beaucoup pour le lien et le bout de code, sa fonctionne parfaitement
0
Rejoignez-nous