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 :

Comportement combobox effarant !


Sujet :

Windows Forms

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut Comportement combobox effarant !
    Bonjour à tous,

    Je viens de tomber sur un cas, du genre qui me fait très peur...

    Prenons une combobox. Plaçons lui deux items dans la collection d'items :
    - Coucou c'est moi
    - Coucou

    Selectionnez Coucou puis regardez ensuite quelle est la selectedvalue... c'est la premiere !!!!!

    Alors bon, on peut se dire qu'avec un binding objet ca doit rouler car là dans l'exemple on se base sur du texte seul, on pourrait excuser. On se dit qu'avec le binding il va se baser sur la reference objet qui est associée à l'item...
    Donc rebelote, on code une petite classe avec deux property Id et Nom
    On créé deux objets :
    Un avec "Coucou c'est moi" dans le nom et l'autre avec seulement "Coucou" dans le nom.

    On ajoute en premier le "Coucou c'est moi" puis en second le "Coucou" dans un tableau d'objets.
    On binde le datasource de la combo sur notre tableau d'objets
    On met le valueMember sur la property Id et le displaymember sur Nom.
    On lance puis on selectionne le second choix : "Coucou", on regarde le selected value, c'est la premiere proposition !!!!!!

    Edit : en discutant du probleme avec une autre personne je me suis rendu compte que c'etait pas forcement evident de voir ou est le probleme.

    En fait, il faut selectionner le deuxieme element de la combo, verifier son selected value, deplier la combo sans changer la valeur selectionnée puis retester le selected value et c'est là qu'on constate le probleme...

    Edit2 : Bug signalé sur la msdn, on verra bien...

    C'est hallucinant comme comportement non ?
    Qu'en pensez vous ?

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    j'en ai trouvé des tas de bug sur .net, et après coup, c'était toujours moi qui avait mal saisi un truc ...
    donc j'y crois pas trop à ton problème ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    je viens de tester, selectedvalue ne contient jamais rien
    et selecteditem varie en effet quand le combobox est ouvert, si on déplace la souris sur les elements, ca change l'element selectionné, alors qu'on a pas refermé mais par ca ne déclenche pas selectedvaluechanged

    c'est un comportement voulu par microsoft, certes plutot étrange, mais en général on regarde ce qu'il y a dans un combobox suite à clic quelquepart, pas pendant l'édition de celui ci ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Tu n'as pas compris le truc, je me doutais que je n'avais pas tres bien expliqué.

    Voici la démarche à suivre :

    Tu créés un nouveau projet winform
    Tu ajoutes un combo + un bouton
    Dans le load de la form, tu ajoutes ce code (désolé c'est en vb ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim dt as new datatable
    dt.columns.add("Id")
    dt.columns.add("Value")
    dt.rows.add(1, "Coucou c'est moi")
    dt.rows.add(2, "Coucou")
    combobox1.valuemember = "Id"
    combobox1.displaymember = "Value"
    combobox1.datasource = dt
    Sur le bouton click tu ajoutes ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    msgbox(combobox1.selectedvalue.tostring)
    Alors je vais expliquer comme si tu etais debile, mais ne le prend pas comme ca hein c'est juste pour decrire exactement les actions telles que je les produit

    Tu lances l'appli, tu choisis l'item "Coucou" en cliquant sur la petite fleche du combo pour derouler la liste puis en cliquant sur la ligne "Coucou". La liste se replie.
    Tu cliques sur le bouton, il t'affiche un message avec normalement le texte "2" à l'interieur ce qui correspond bien à ton Id concernant cette ligne.

    Maintenant tu cliques sur la petite fleche pour deplier la liste de la combo et là déjà tu constate une premiere chose : la ligne selectionnée est la premiere au lieu d'etre la seconde !
    Tu ne touches à rien, tu fais comme si avais juste voulu regarder le contenu de cette liste puis tu la quitte en cliquant à l'exterieur de celle ci. Tu cliques ensuite sur le bouton et là tu vois que tu as l'Id 1 alors que tu n'as meme pas changé ta selection !

    L'ordre et le texte sont importants dans cet exemple car :

    On rencontre le probleme que je decris avec la suite suivante :
    - Coucou c'est moi
    - Coucou

    Par contre, cela marche avec ces choses là :
    - Coucou
    - Coucou c'est moi
    ou alors
    - Coucou ca marche
    - Coucou c'est moi

    Donc grosso modo, c'est le fait d'avoir deux lignes débutant avec le meme mot, mais dont la premier à du texte apres le premier mot avec un espace entre les deux.

    C'est vraiment louche comme comportement mais sur le forum msdn, on m'a indiqué que comme c'est une combo editable c'est censé etre normal... mouais je suis pas tres convaincu mais bon...

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Et avec du code fait normalement, c'est à dire avec interception des event de changement d'item sélectionné et de changement de texte, ça donne quoi ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Salut

    peux tu etre un peu plus explicite stp ? je suis tres curieux de savoir ce que tu veux dire par là

    Merci

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    En général, on récupére le SelectedIndex/SelectedValue/SelectedItem (au choix) à la suite de l'exécution de de l'event SelectedIndexChanged.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Ok ou alors sur le selectedValueChanged egalement.

    Dans le cas ou tu utilises un modele MVC, ok, c'est cool, tout fonctionne bien, mais quand tu recupere un projet en cours de route qui n'est pas du tout basé sur le modele MVC, mais plutot sur la bonne vieille methode un peu trash, tu l'as dans le baba

    Bon ok, j'ai saisi le truc, je vais voir comment je vais pouvoir m'adapter...
    Merci

  9. #9
    Membre régulier Avatar de Nimothenicefish
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 190
    Points : 103
    Points
    103
    Par défaut
    Bonjour,

    J'ai un p'tit soucis dans l'utilisation des DisplayMember, ValueMember et DataSource. Visual studio me dit que qu'ils ne sont pas membre de System.Windows.Forms.TextBox
    Quelqu'un serait pourquoi et surtout comment contourner le problème ?

    Merci de votre compréhension

    Cordialement, Nimo

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Bonjour,

    Je pense que le mieux a faire dans un premier temps est de créer un nouveau topic qui sera prévu à cet effet

  11. #11
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    je me disais aussi "je vois pas le rapport"
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    C'est un deterreur de topic : il trouve de vieux topics, les déterre et relance un nouveau topic au bout

  13. #13
    Membre régulier Avatar de Nimothenicefish
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 190
    Points : 103
    Points
    103
    Par défaut
    Le sujet est pas si vieux que ça

    En tout cas merci pour cette qualification de deterreur de topic, ça fait zizir

    Mon soucis a quand même un rapport avec ce topic tant à l'utilisation des DisplayMember, ValueMember et DataSource ...

    Je vais quand même poster un nouveau sujet

Discussions similaires

  1. [WD18] Comportement combobox en selection
    Par Fred 57220 dans le forum WinDev
    Réponses: 9
    Dernier message: 11/05/2013, 08h16
  2. Réponses: 15
    Dernier message: 09/11/2012, 11h52
  3. Comportement ComboBox
    Par Apo75 dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 16/12/2010, 11h12
  4. ComboBox.DropDownCount, comportement différent entre 2000 et XP
    Par Jipété dans le forum Composants VCL
    Réponses: 4
    Dernier message: 10/11/2007, 18h32
  5. [VB.NET] Datagrid comportant des combobox
    Par smedini dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/01/2006, 10h02

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