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# Discussion :

WinForm ComboBox.Text Erroné


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut WinForm ComboBox.Text Erroné
    Bonjour,

    Je reprend un code existant, et j'ai un petit souci avec un remplissage d'un ComboBox, ou du moins la relecture. J'avoues que je comprend pas trop, car c'est un code qui est sensé fonctionné et j'ai des loupé.

    Voila le code de remplissage du ComboBox. Je rappel je ne fait qu'écrire ce qu'il y avait dans le code avant que je prenne le projet en main.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                    Dictionary<string, string> ArrayCb = new Dictionary<string, string>();
                    ArrayCb.Add("512", "512");
                    ArrayCb.Add("1024", "1024");
                    ArrayCb.Add("2048", "2048");
                    ArrayCb.Add("4096", "4096");
                    comboBoxLS.DataSource = new BindingSource(ArrayCb, null);
                    comboBoxLS.DisplayMember = "Value";
                    comboBoxLS.ValueMember = "Key";
                    comboBoxLS.SelectedIndex =0;
    Dans le ComboBox j'ai bien 4 éléments avec 512 d'affiché puis l'on retrouve 1024, 2048, 4096 dans la liste déroulante.

    Mon souci:
    Si je ne clique pas dans la ComboBox, à la lecture de comboBoxLS.Text j'ai = "[512, 512]".
    Si je clique dans la ComboBox, à la lecture de comboBoxLS.Text = "512". (seulement 512).

    Bon personnellement je ne voie pas pourquoi il avait remplis le combobox ainsi, je vais faire plus simplement, mais c'est plus pour une connaissance perso, pourquoi il faut cliquer dans le combo pour avoir la valeur du texte afficher "512" ? le forçage du SelectedIndex = 0 n'est-il pas équivalemment au clic dans le combo.

    A aucun moment dans le ComboBox j'ai [512, 512] d'affiché.

    Merci

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Cela affiche que 512 uniquement parce que tu as mappé la propriété DisplayMember sur la propriété Value des KeyValuePair qui composent ton dictionnaire.
    Mais la valeur de Text correspond à ce que renvoie ToString sur le KeyValuePair sélectionné.

    Si tu veux récupérer le code, il faut utiliser SelectedValue (qui va correspondre à la propriété Key de ton KeyValuePair puisque c'est ce que vaut ValueMember)

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Citation Envoyé par popo Voir le message
    Cela affiche que 512 uniquement parce que tu as mappé la propriété DisplayMember sur la propriété Value des KeyValuePair qui composent ton dictionnaire.
    Mais la valeur de Text correspond à ce que renvoie ToString sur le KeyValuePair sélectionné.

    Si tu veux récupérer le code, il faut utiliser SelectedValue (qui va correspondre à la propriété Key de ton KeyValuePair puisque c'est ce que vaut ValueMember)

    Ha oui effectivement cela fonctionne avec SelectedValue, mais le code existant ne pouvais pas fonctionner du coup, cela me rassure, car il sauvegardait la valeur à l'aide de comboBoxLS.Text, et lorsqu'il relisait la valeur, il faisait une conversion d'un string en Integer, mais cela ne fonctionne pas bien un int.Parse("[512 , 512]")

    Merci bien pour cette confirmation.

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

Discussions similaires

  1. Combobox.text qui ne se met pas à jour
    Par davels dans le forum Delphi
    Réponses: 6
    Dernier message: 21/08/2006, 10h29
  2. [C#][WinForm] ComboBox
    Par onizuanda dans le forum Windows Forms
    Réponses: 10
    Dernier message: 09/06/2006, 13h50
  3. [WinForms] ComboBox avec valeur non désirée
    Par Ditch dans le forum Général Dotnet
    Réponses: 14
    Dernier message: 11/04/2006, 16h52
  4. [C#] [WinForms] ComboBox DropDownList
    Par RobinJulie dans le forum Windows Forms
    Réponses: 7
    Dernier message: 13/10/2004, 11h02
  5. combobox->text
    Par clovis dans le forum C++Builder
    Réponses: 18
    Dernier message: 21/06/2002, 15h43

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