IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] Problème de Focus, désespéré


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Par défaut [C#] Problème de Focus, désespéré
    Bonjour à tous

    Je viens à vous car je suis vraiment à court d'idée, j'ai fait de nombreuses recherches sur internet, sur votre forum, mais rien à faire je ne trouve aucunes solutions.

    Voici mon problème :

    J'ai crée un labyrinthe, avec 4 boutons qui permettent de naviguer dans celui ci(voir ci dessous).


    A chaque déplacement, j'appelle une méthode qui me retourne les cases possibles du déplacement (les boutons se mettent à disable lorsque la direction est impossible). Tout marche parfaitement, mais lorsque j'ai essayé d'implémenter l'utilisation des flèches directionnelles, je n'arrive pas à redonner le focus à la fenêtre.
    J'ai bien KeyPreview = true; dans le load de la fenêtre.
    Et dans la méthode Keydown j'ai mis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                e.Handled = true;
                if (e.KeyCode == Keys.Left)
                {
                    if (bOuest.Enabled == true)
                    {
                        bOuest.PerformClick();
                    }
                }
    A chaque appel, les boutons reprennent le focus, donc l'appel à la méthode KeyDown ne fonctionne plus.
    J'ai vraiment tout essayé (redonner le focus à la form lors de l'appel à la méthode) et je suis vraiment à court d'idées.
    Merci d'avance à ceux qui ont pris la peine de lire

    Un developpeur déprimé

  2. #2
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Si le code qui déplace ton bonhomme est dans une méthode séparée qui est appelée dans la méthode Click de ton bouton, alors au lieu de faire un btnDown.PerformClick(), appel directement cette méthode.

    Comme çà ton focus ne devrait pas aller sur ton bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    protected void btnDown_Clicked(object sender, EventArgs e)
    {
        MoveBonhomme("down");
    }
    ...
    private void Form1_KeyDown(object sender, KeyEventArgs e)  
    {  
       e.Handled = true; 
       if (e.KeyCode == Keys.Left)  
       {  
          if (bOuest.Enabled == true)  
          {
             MoveBonhomme("gauche"); 
          }  
       }
    }
    ...
    private void MoveBonhomme(string direction)
    {
       //Code de déplacement du bonhomme
    }

  3. #3
    Membre confirmé
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Par défaut
    Merci pour ta réponse, j'ai essayé mais en vain ca ne marche pas.
    En fait j'aimerais que l'utilisateur ait la possibilité d'utiliser soit les flèches soit les boutons, le souci c'est que dès que les boutons n'ont plus le focus les flèches marchent nikel.
    Au contraire lorsque je clique sur un bouton pour la direction, les boutons reprennent le focus et la impossible d'utiliser les fleches....

    Question : est ce que le fait de mettre les boutons enable, active le focus sur le bouton?

    Autre question : n'y a t il pas un moyen d'écouter tous les evenements clavier quelque que soit le control activé?

  4. #4
    Membre confirmé
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Par défaut
    pas d'idées svp?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 104
    Par défaut


    Form.KeyPreview :
    Obtient ou définit une valeur indiquant si le formulaire doit recevoir des événements de touche avant que l'événement ne soit passé au contrôle ayant le focus.

    donc met cette propriété à true, et la vie sera plus belle

  6. #6
    Membre confirmé
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Par défaut
    j'ai déjà mis
    KeyPreview = true ; Dans le load de la fenêtre

    Mais ca ne marche toujours pas

Discussions similaires

  1. Problème de focus avec une TTreeView
    Par Rustine dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/10/2005, 19h12
  2. Problème de Focus
    Par Charette dans le forum Composants VCL
    Réponses: 7
    Dernier message: 15/09/2005, 00h18
  3. problème de focus dans un CEdit
    Par Depteam1 dans le forum MFC
    Réponses: 11
    Dernier message: 08/09/2005, 16h05
  4. [JTextField] Problème de focus
    Par clairette dans le forum Composants
    Réponses: 29
    Dernier message: 22/07/2005, 17h52
  5. Problème de focus + touches de direction
    Par schnito dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 11/01/2005, 21h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo