Raccourci clavier pour les fleche ne fonctionne pas? [Résolu]

blade196 14 Messages postés mardi 27 avril 2010Date d'inscription 2 juillet 2010 Dernière intervention - 28 juin 2010 à 12:24 - Dernière réponse : blade196 14 Messages postés mardi 27 avril 2010Date d'inscription 2 juillet 2010 Dernière intervention
- 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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_christoni 140 Messages postés mardi 25 novembre 2003Date d'inscription 1 novembre 2010 Dernière intervention - 28 juin 2010 à 23:13
3
Merci
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

Merci cs_christoni 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de cs_christoni
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 28 juin 2010 à 13:24
0
Merci
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)
Commenter la réponse de cs_Jack
blade196 14 Messages postés mardi 27 avril 2010Date d'inscription 2 juillet 2010 Dernière intervention - 28 juin 2010 à 13:41
0
Merci
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
Commenter la réponse de blade196
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 28 juin 2010 à 16:14
0
Merci
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 !
Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 28 juin 2010 à 16:18
0
Merci
    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
Commenter la réponse de cs_Jack
blade196 14 Messages postés mardi 27 avril 2010Date d'inscription 2 juillet 2010 Dernière intervention - 28 juin 2010 à 16:41
0
Merci
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
Commenter la réponse de blade196
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 28 juin 2010 à 18:24
0
Merci
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 ?
Commenter la réponse de cs_Jack
blade196 14 Messages postés mardi 27 avril 2010Date d'inscription 2 juillet 2010 Dernière intervention - 2 juil. 2010 à 15:43
0
Merci
merci beaucoup pour le lien et le bout de code, sa fonctionne parfaitement
Commenter la réponse de blade196

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.