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

C++/CLI Discussion :

Lier une comboBox à une richTextBox


Sujet :

C++/CLI

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2006
    Messages : 46
    Points : 17
    Points
    17
    Par défaut Lier une comboBox à une richTextBox
    Bonjour à tous,

    Je viens tout nouveau dans le monde du développement en C++ via Visual C++ 2005.
    J'essaye d'automatiser la gestion de création de formulaire.

    Mon problème? J'ai une liste déroulante qui je voudrais associer à une richTextBox.
    Une liste déroulante le lieu associé à des adresses. Je voudrais que quand on selectionne un lieu cela affiche l'adresse correspondante dans la richTextBox.

    Est-ce facilement réalisable?
    Merci de me donner des pistes.


  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    est-ce que tu fais du .Net ? (i.e. application winforms)

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2006
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    J'ai utilisé des tutos trouvé sur developpez.net.
    J'ai créé un projet CLR avec un templates Windows Form Application

    EDIT : je viens de trouver l'évenement à associer "comboBox2_SelectedIndexChanged"

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu réagis à l'événement, et tu as plus qu'à changer la valeur de ton richedit

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2006
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    Merci.
    J'ai passé la première étape. J'arrive à recopier la valeur de ma liste déroulante dans le richtextBox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private: System::Void comboBox2_SelectedIndexChanged(System::Object^  sender, System::EventArgs^  e) {
    			 richTextBox1->Text = comboBox2->Text;
    		 }
    L'étape suivante c'est qu'à chaque valeur de la comboBox, la richTextBox affiche l'adresse correspondante. Va y'avoir du if dans l'air... Mais je bloque quand même...

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    d'où viennent ces adresses ?

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2006
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    C'est justement là que je me pose des questions.

    Faut-il que je créé un tableau d'adresse (je ne sais pas faire... ).
    Ensuite une boucle me permettrai de remplir ma richtextBox (si la valeur du tableau == le choix de ma comboBox alors affiche l'adresse dans la richTextBox)

    J'ai juste sur le raisonnement?

    Si oui, comment je pourrais faire?

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu peux utiliser un tableau associatif pour ça.
    Regarde du coté de la classe System::Collections::Generic::Dictionary<>...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Tu pourrais utiliser une collection generique, genre un Dictionary<String ^, String ^>
    un élément serait le code de la combo (en tant que clé), et l'autre l'adresse
    et tu aurais juste à afficher le texte par rapport à la clé selectionnée

    est-ce que je suis clair ?

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2006
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    Oui, je comprends bien le principe.
    Par contre je pourrais avoir un exemple?

  11. #11
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Dictionary<String^, String ^> dictionnaire = gcnew Dictionary<String ^, String ^>();
            dictionnaire->Add("elt1", "adresse1");
            dictionnaire->Add("elt2", "adresse2");
    puis tu récupères l'élément selectionné de la combo et tu fais un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    richText->Text = dictionnaire[elementSelectionne];

  12. #12
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2006
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    Merci de l'exemple.
    Je bute juste sur la comboBow maintenant. Comment ^puiis-je faire pour incorporer mon dictionnaire sur la combobox.

    En l'état des choses voici le code de ma combo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    this->comboBox2->FormattingEnabled = true;
    			this->comboBox2->Items->AddRange(gcnew cli::array< System::Object^  >(75) {L"blabla1", L"blabla2", L"blabla3", L"blabla4", 
    			this->comboBox2->Location = System::Drawing::Point(121, 137);
    			this->comboBox2->Name = L"comboBox2";
    			this->comboBox2->Size = System::Drawing::Size(159, 21);
    			this->comboBox2->TabIndex = 6;
    			this->comboBox2->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::comboBox2_SelectedIndexChanged);

  13. #13
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu peux faire un for each sur le dictionnaire et ajouter la clé dans la combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            for each( KeyValuePair ^<String ^, String ^> kvp in dictionnaire )
            {
                // et ajouter ici kvp->Key
            }
    un truc du genre quoi

  14. #14
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2006
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    Je n'arrive à rien. pas même déclarer le dictionnaire...

  15. #15
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si tu ne nous dis pas quelles erreurs tu as quand tu déclares le dictionnaire, on ne peut pas vraiment t'aider...

    PS: N'oublie pas que tout ça est dans le namespace System::Collections::Generic...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2006
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    J'ai bien la classe suivante instanciée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using namespace System::Collections;
    Ensuite je déclare mon dico
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private: System::Collections::Generic::Dictionary<String^, String ^>	Dictionary;
    Mais ensuite je l'initialise ou et comment???

  17. #17
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    comme dans l'exemple que je t'ai montré hier
    gcnew et add

  18. #18
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2006
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    Mais je l'initalise ou???

    Dans "void InitializeComponent(void)"?
    Dans ce cas, j'ai l'erreur
    \Form1.h(340) : error C2275: 'System::String' : illegal use of this type as an expression
    c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : see declaration of 'System::String'
    \Form1.h(340) : error C2059: syntax error : ','
    \Form1.h(341) : error C2065: 'dictionnaire' : undeclared identifier
    \Form1.h(341) : error C2227: left of '->Add' must point to class/struct/union/generic type
    type is ''unknown-type''

  19. #19
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    dans le form_load par exemple

  20. #20
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    bon, je t'ai fait l'exemple :

    déclaration en membre private de ton dictionnaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Generic::Dictionary<String ^, String ^> ^ dictionnaire;
    initialisation du dictionnaire dans le form_load et alimentation de la combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    				 dictionnaire = gcnew Generic::Dictionary<String ^, String ^>();
    				 dictionnaire->Add("un", "adresse 1");
    				 dictionnaire->Add("deux", "adresse 2");
     
    				 for each (Generic::KeyValuePair<String ^, String ^> ^kvp in dictionnaire)
    				 {
    					 comboBox1->Items->Add(kvp->Key);
    				 }
    			 }
    mise à jour du richtext au moment de la selection dans la combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	private: System::Void comboBox1_SelectedIndexChanged(System::Object^  sender, System::EventArgs^  e) {
    					richTextBox1->Text = dictionnaire[comboBox1->SelectedItem->ToString()];
    			 }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. lier trois combobox à une seule liste de trois choix
    Par ghatfan99 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 05/07/2013, 09h28
  2. [VB.NET] inserer des elements d'une combobox à une base de donnée?
    Par webstyle dans le forum Débuter
    Réponses: 1
    Dernier message: 17/03/2013, 08h22
  3. Réponses: 2
    Dernier message: 23/12/2009, 13h33
  4. Liaison d'une Query à une ComboBox
    Par CleeM dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/07/2007, 10h22
  5. affecter le résultat d'une requete à une comboBox
    Par freestyler dans le forum Delphi
    Réponses: 5
    Dernier message: 25/10/2006, 15h37

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