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 Presentation Foundation Discussion :

Changer texte dans un comboBox sans appeler d'événements


Sujet :

Windows Presentation Foundation

  1. #1
    Candidat au Club
    Homme Profil pro
    Programmeur-analyste
    Inscrit en
    Janvier 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-analyste

    Informations forums :
    Inscription : Janvier 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Changer texte dans un comboBox sans appeler d'événements
    Bonjour,

    J'aurais une question assez simple. Dans une application WPF, avec des comboBox déjà remplies avec des années, est-il possible de changer le texte d'un comboBox, sans que l'événement SelectionChanged ne soit appelé ? Merci à l'avance de votre attention.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Je ne pense pas

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Tu ne peux pas empêcher l'évènement de se produire, mais tu peux toujours l'ignorer...

  4. #4
    Candidat au Club
    Homme Profil pro
    Programmeur-analyste
    Inscrit en
    Janvier 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-analyste

    Informations forums :
    Inscription : Janvier 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Et comment je peux ignorer l'événement SelectionChanged lorsque je change le texte d'un comboBox ?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par ToupetMan Voir le message
    Et comment je peux ignorer l'événement SelectionChanged lorsque je change le texte d'un comboBox ?
    - soit tu ne t'abonnes pas à l'évènement... mais je suppose que si tu te poses la question, c'est justement parce que tu as besoin de gérer cet évènement

    - soit tu mets un flag pour dire "je suis en train de modifier le texte par le code, ce n'est pas une action de l'utilisateur" :

    Code C# : 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
    private void Toto()
    {
        ...
        _changingComboText = true;
        comboBox1.Text = "blabla";
        _changingComboText = false;
        ...
    }
     
    private bool _changingComboText;
     
    private void comboBox1_SelectionChanged(object sender, RoutedEventArgs e)
    {
        if (_changingComboText)
            return;
     
        // ton traitement normal
        ...
     
     
    }

  6. #6
    Candidat au Club
    Homme Profil pro
    Programmeur-analyste
    Inscrit en
    Janvier 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-analyste

    Informations forums :
    Inscription : Janvier 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Merci
    Désolé pour le délai de la réponse. Je suis en plein projet synthèse pour le cours que je suis. L'idée est géniale, et je l'ai utilisé dans mon projet. Merci encore de votre aide !! C'est vraiment apprécié !!

  7. #7
    Invité
    Invité(e)
    Par défaut
    La méthode suivant te permet d'ignorer l'évènement. Il suffit de dériver de la classe ComboBox et de rédéfinir la méthode OnSelectionChanged et mettre juste un return dans l'implémentation sans faire appel à la méthode base.OnSelectionChanged.

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class CustomComboBox : ComboBox
    {
    	protected override void OnSelectionChanged(SelectionChangedEventArgs e)
    	{
    		return;
    		//base.OnSelectionChanged(e);
    	}
    }

    Tu peux aussi te baser sur un flag pour ignorer donc faire un return ou déclencher l'évènement comme dans le principe de Tomlev.

  8. #8
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Bonjour,

    Une autre solution peut être plus simple consiste à mettre la propriété Handled de l'argument à true.

    Bon courage,

  9. #9
    Invité
    Invité(e)
    Par défaut
    Mettre la e.Handled = true; empêche juste le fait que la propagation de l'évènement n'effectue pas mais pas le fait que l'évènement ne soit pas déclenché.

    Alors qu'avec ma méthode que l'utilisateur s'abonne à l'évènement en mode tunneling ou bubbling l'évènement ne se déclenchera jamais.

  10. #10
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Effectivement, cela dépend du besoin final

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

Discussions similaires

  1. ComboBox sans appel de fonction
    Par antoinev2 dans le forum Tkinter
    Réponses: 1
    Dernier message: 06/04/2009, 13h25
  2. [DOM] Changer ordre dans une combobox
    Par RobinNono dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/11/2008, 10h04
  3. incrémentattion de texte dans une combobox
    Par lolo55 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 03/08/2008, 21h52
  4. Ajouter du texte dans une ListBox sans sauter de ligne
    Par walid_kerkoub dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/03/2008, 15h42
  5. Centrer le texte dans une Combobox
    Par mouloudéen dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/04/2007, 09h06

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