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#] Activer/Désactiver évènement KeyDown


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 39
    Points : 34
    Points
    34
    Par défaut [C#] Activer/Désactiver évènement KeyDown
    Bonjour,

    J'ai une form Accueil qui va servir de support à tous les écrans de mon application.

    Je m'explique, cette form m'affiche un menu dans une ListView dont la sélection se fait par appui sur les touches F1, F2, F3, ...

    Derrière chaque raccourci se cache l'appel à un UserControl qui sera le déroulé de ma fonction (un TabControl est inclus dans chaque UserControl afin de gérer la navigation).

    J'ai besoin d'activer l'évènement KeyDown à l'ouverture de la form (pas de souci), de le désactiver une fois qu'un appui est effectué (exemple : F1), pour que mon UserControl prenne la main (lui-même contient un évènement KeyDown pour passer d'un onglet à un autre), et une fois ce UserControl fermé (techniquement je ne sais pas comment faire pour le fermer, je ne fais qu'un : ), la form Accueil doit pouvoir remettre en service son évènement KeyDown.

    Et là gros gros blocage...

    Si vous avez une solution, je suis preneur !

    Merci

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    Bon j'ai trouvé, j'apporte la solution à celui ou celle qui pourrait en avoir besoin.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    namespace Test
    {
        public partial class Accueil: Form
        {
            /* différentes fonctions de mon menu */
            UCTest1 test1;
            UCTest2 test2;
            UCTest3 test3;
     
            public Accueil()
            {
                InitializeComponent();
                test1 = new UCTest1();
                test2 = new UCTest2();
                test3 = new UCTest3();
            }
     
            /* Permet de gérer les touches spéciales dans le menu principal */
            private void Accueil_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.F1)
                {
                    this.Text = "Test1";
                    test1.Visible = true;
                    test1.Dock = DockStyle.Fill;
                    test1.Parent = this;
                    test1.BringToFront();
                    test1.Visible = true;
                    evenementKeyDown(false);
                }
                else if (e.KeyCode == Keys.F2)
                {
                    this.Text = "Test2";
                    test2.Dock = DockStyle.Fill;
                    test2.Parent = this;
                    test2.BringToFront();
                    test2.Visible = true;
                    evenementKeyDown(false);
                }
                else if (e.KeyCode == Keys.F3)
                {
                    this.Text = "Test3";
                    test3.Dock = DockStyle.Fill;
                    test3.Parent = this;
                    test3.BringToFront();
                    test3.Visible = true;
                    evenementKeyDown(false);
                }
            }
     
            /* Permet de gérer les touches spéciales dans la fonction "Test1" */
            private void Test1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.F1)
                {
                    test1.BtRetour_Click(test1.BtRetour, null);
                }
                else if (e.KeyCode == Keys.F2)
                {
                    test2.BtSuivant_Click(test2.BtSuivant, null);
                }
     
                if (!test1.Visible)
                    evenementKeyDown(true);
            }
     
            /* Permet de basculer les évènements KeyDown selon la fonction choisie */
            public void evenementKeyDown(bool activate)
            {
                if (activate)
                {
                    this.KeyDown -= new KeyEventHandler(Test1_KeyDown);
                    this.KeyDown += new KeyEventHandler(Accueil_KeyDown);
                }
                else
                {
                    this.KeyDown += new KeyEventHandler(Test1_KeyDown);
                    this.KeyDown -= new KeyEventHandler(Accueil_KeyDown);
                }
            }
    }
    Afin d'expliquer mon code, la fonction Accueil contient un menu et chaque UserControl a 2 boutons (qui vont disparaître) et donc 2 fonctions de clic (qui vont être créés sous une autre forme) "Retour" et "Suivant" afin de naviguer dans un TabControl.

    Ainsi, je peux laisser l'utilisateur travailler avec les touches spéciales plutôt qu'avec l'écran tactile sachant que je suis sur du terminal mobile en Windows CE.

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. désactiver/activer les évènements
    Par olivierPa dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/10/2009, 18h37
  2. activer/désactiver la compression GZIP des pages
    Par iubito dans le forum Développement Web en Java
    Réponses: 7
    Dernier message: 20/08/2008, 21h35
  3. Activer/Désactiver évènements sur un control
    Par Titi41 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 13/06/2008, 10h28
  4. Réponses: 12
    Dernier message: 06/10/2006, 09h26
  5. Bouton d'activation/désactivation de tooltips
    Par bigboomshakala dans le forum MFC
    Réponses: 2
    Dernier message: 26/04/2004, 08h54

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