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 :

Capture d'évênement clavier par un composant non visible


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Points : 20
    Points
    20
    Par défaut Capture d'évênement clavier par un composant non visible
    Bonjour à tous,

    je viens ici vous présenter mon pb. De ce que je sais on peut le résoudre en utilisant la librairie win32 mais je souhaiterais éviter de descendre si bas.

    Mon pb est le suivant : j'ai fais un userControl qui est donc un composant graphique. Celui-ci capture les événements clavier dès qu'on a le focus sur l'application mère (et pas seulement sur le composant). Ça marche bien.

    Par contre si on met la propriété Visible du composant à false, les événements ne sont plus capturés.

    Voici le bout de code qui me permet de capturer mes événements dans le load du composant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                if (this.ParentForm != null)
                {
                   this.ParentForm.KeyPreview = true;
                   this.ParentForm.KeyDown += new KeyEventHandler(UI_KeyDown);
                   this.ParentForm.KeyUp += new KeyEventHandler(Parent_KeyUp);
               }
    Ce qui se passe c'est que quand le composant est invisible (this ici), le load n'étant plus exécuté, il faut que je puisse m'abonner dans le constructeur du composant or la parentform est alors nulle ...

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    0 réponses en 48 heures lol .

    Pourtant il s'agit juste de capturer les évènements clavier dans une appli à partir d'un composant graphique.

    Visiblement, pas si facile que ça! Je crois qu'il me reste plus qu'à implémenter la solution bas niveau

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    event parentchanged si ton uc est sur le form
    ou alors mettre visible à false pendant ou après l'event load
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    Merci pour ces idées, je vais tester de ce côté là.

    je peux pas mettre le visible à False dans le Load car mon but est justement que le développeur qui utilise mon composant se concentera de la propriété standard Visible. Elle sera à False dès le départ. En revanche ça m'a donné une idée : si le Visible est à False dans le constructeur je le passe à True pour le remettre à False dans le load lol

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    Bon j'ai testé les deux et ça marche pas.

    Le parentChanged ne capture pas les évènements clavier

    Et pour le Visible, on le modifie avant le Load car il s'agit d'une propriété que l'on change dans le designer, sa valeur est donc mise dans le initializecomponent.

    Si on doit utiliser le Visible à la main dans le code, ca ne sert à rien car le but c'est justement de pouvoir se contenter de la propriété du composant dans le designer.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    Si le control n'est pas visible c'est logique qu'il n'attrappe pas les events

    Le plus logique serait de capturer les events sur la WinForm et non sur le control
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

Discussions similaires

  1. capture d'événement clavier
    Par roland34 dans le forum Débuter
    Réponses: 4
    Dernier message: 11/03/2013, 22h43
  2. Réponses: 4
    Dernier message: 12/12/2010, 11h08
  3. Capturer les événement claviers sous Webdev
    Par Dedalerun dans le forum WebDev
    Réponses: 0
    Dernier message: 19/01/2009, 08h26
  4. Réponses: 7
    Dernier message: 24/10/2008, 11h45
  5. [JTabbedPane] capture des événements clavier
    Par sepas dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 13/06/2008, 23h10

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