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 :

MDI Form événements clavier


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Points : 75
    Points
    75
    Par défaut MDI Form événements clavier
    Salut à tous,

    Je bosse sur un projet C#/VS 2005 express en mode MDI.
    Je souhaite passer d'un formulaire à l'autre en pressant la touche F12 (changer le focus d'un MDIchildren), pour cela j'ai tenter deux approches et aucune ne marche. Je vois bien qu'avec le debugueur l'application ne déclenche jamais les événements. Je n'y comprends rien du tout. En voici le code :

    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
     
    // dans InitializeComponents()
    this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.MainMenu_KeyUp);
     
    private void MainMenu_KeyUp(object sender, KeyEventArgs e)
    {
    	if (e.KeyCode == Keys.F12)
    	{
    		if (this.MdiChildren.Length > 0)
    		{
    			if (this.iNavMdiChildren >=this.MdiChildren.Length - 1)
    				this.iNavMdiChildren = 0;
    			else
    				this.iNavMdiChildren++;
     
    			this.MdiChildren[this.iNavMdiChildren].Focus();
    		}
    	}
    }
     
    protected override void OnKeyPress(KeyPressEventArgs e)
    {
    	base.OnKeyPress(e);
    	if ((int)e.KeyChar == (int)Keys.Escape)
    	{
    		this.Close();
    	}
     
    	if ((int)e.KeyChar == (int)Keys.F12)
    	{
    		if (this.MdiChildren.Length > 0)
    		{
    			if (this.iNavMdiChildren >= this.MdiChildren.Length - 1)
    				this.iNavMdiChildren = 0;
    			else
    				this.iNavMdiChildren++;
     
    			this.MdiChildren[this.iNavMdiChildren].Focus();
    		}
    	}
    }
    Merci pour votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    as tu pensé à mettre la propriété suivante :

    KeyPreview = true;

    dans le formulaire qui recoit les appuis clavier ?

    Car si tu n'as pas fait cela, l'appui sur une touche clavier va etre traité
    par le gestionnaire d'event clavier du controle possédant le focus...

    donc, pas d'event remonter au niveau du formulaire parent...

    Ce qui expliquerai ton problème...

    Essaye cela et dis moi si cela resoud ton problème

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Points : 75
    Points
    75
    Par défaut
    Ca fonctionne merci beaucoup ! J'avais remarqué cette propriété mais l'aide est un peu floue ; avec le recul ça veut bien dire ce que ça veut dire lol.

    Merci beaucoup (je commençais à criser !)

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    n'oublies pas de passer ta question à résolue

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Autre question liée une application MDI
    Citation Envoyé par theMonz31
    as tu pensé à mettre la propriété suivante :

    KeyPreview = true;

    dans le formulaire qui recoit les appuis clavier ?

    Car si tu n'as pas fait cela, l'appui sur une touche clavier va etre traité
    par le gestionnaire d'event clavier du controle possédant le focus...

    donc, pas d'event remonter au niveau du formulaire parent...

    Ce qui expliquerai ton problème...

    Essaye cela et dis moi si cela resoud ton problème

    The Monz, Toulouse
    Bonsoir tous les deux,
    Je viens de commencer à développer une application MDI. Mais je ne sais pas comment récupérer une valeur d'un champ TextBox d'un autre Form? Comment déclarer des variables globales qui sont accessibles pour tous les Forms? Merci d'avance
    Lingli

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

Discussions similaires

  1. [API windows] Récupérer proprement les évènements clavier...
    Par heider dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 20/03/2006, 13h05
  2. [VB6] Réduire en icône une MDI form dans le systray
    Par lefoimpeur dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 12/01/2006, 16h56
  3. [MFC][VC++.NET]gestion évènement clavier
    Par Rafoo dans le forum MFC
    Réponses: 2
    Dernier message: 14/12/2005, 09h29
  4. Réponses: 5
    Dernier message: 25/07/2005, 09h29
  5. Problème évènements clavier
    Par julie20 dans le forum Langage
    Réponses: 3
    Dernier message: 24/09/2003, 12h39

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