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 :

ComboBox event SelectionChanged et valeur courante séléctionné


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Par défaut ComboBox event SelectionChanged et valeur courante séléctionné
    Bonsoir,
    J'ai une petit problème dont je suis sur qu'il a sa solution ce qui explique ma présence ici.
    Je code en C# avec du WPF mais je ne pense pas que cela change grand chose :
    Sur un ComboxBox je met un event "SelectionChanged" et dans la fonction MaComboBox_SelectionChanged j'affiche dans un MessageBox MaComboBox.Text et j'ai la valeur de l'ancienne valeur séléctionner dans ma ComboBox.
    La question est comment récupéré la valeur de la valeur courante séléctionné.
    Merci

  2. #2
    Membre éprouvé Avatar de Alt157
    Profil pro
    Inscrit en
    Février 2009
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 143
    Par défaut
    Bonsoir,

    Tu ne peux pas récupérer l'index de l'élément selctionné et afficher sa valeur ?

    ( je suis sur Visual Studio 2005 )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    comboBox1.Items[comboBox1.SelectedIndex].ToString()

  3. #3
    Membre éclairé Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Par défaut
    Lorsque je fais cela j'ai tout d'abord :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox.Show("'" + ProdType.Items[ProdType.SelectedIndex].ToString() + "'", "Value");
    Ma message Box affiche : "System.Data.DataView"
    Dans un premier temps puis j'ai une tentative d'affichage d'une seconde ComboBox et une exception du Type : ArgumentOutOfRange.
    Peut être que cela change quelque chose que je soit sous WPF.

  4. #4
    Membre éprouvé Avatar de Alt157
    Profil pro
    Inscrit en
    Février 2009
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 143
    Par défaut
    Pourrais tu montrer un peu plus de code ?

    Si tu le fais dans le load c'est normal que cela plante...(outOfRange) car rien n'est sélectionné

    Tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (ProdType.SelectedIndex != -1)
    {
       MessageBox.Show(ProdType.Items[ProdType.SelectedIndex].ToString());
    }
    ou dire dans le load que de base tu selectionnes le premier élément :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ProdType.SelectedIndex = 0;

  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 : 44
    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
    Par défaut
    Tiens, j'avais jamais remarqué ça... en fait j'ai l'impression que l'évènement SelectionChanged se produit avant que le text ait effectivement changé...
    Si ta source de données est simplement une liste de String, tu dois pouvoir faire un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string text  = (combo.SelectedItem as ComboBoxItem).Content as string;

  6. #6
    Membre éclairé Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Par défaut
    Et saurais-tu me dire ce que cela donne en C# puisque si j'essaye de faire :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    string text = (string)(((ComboBoxItem)combo.SelectedItem).Content);
    J'ai une InvalidCastException

    Et je ne peux pas faire :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    ProdType.SelectedIndex = 0;
    Puisqu'il s'agit d'une ComboBox de filtrage de donnée.
    Et lorsque je fais :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (ProdType.SelectedIndex != -1)
    {
       MessageBox.Show(ProdType.Items[ProdType.SelectedIndex].ToString());
    }
    Cela m'affiche :
    System.Data.DataView
    Merci

  7. #7
    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 : 44
    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
    Par défaut
    Citation Envoyé par SKone Voir le message
    Et saurais-tu me dire ce que cela donne en C#
    Euh... c'est du C#

    Citation Envoyé par SKone Voir le message
    Cela m'affiche :
    System.Data.DataView
    Merci
    tu as défini comment l'ItemsSource du combo ?

  8. #8
    Membre éclairé Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Par défaut
    J'avais pas percuté les 'as' m'on induit en erreur et fait pensé à du VB.
    Je ne comprend pas ton code d'ailleur lorsque je le fait j'ai une :
    NullReferenceException.

    En fait MaComboBox.ItemSelected me donne la valeur de l'ancienne valeur séléctionné.

    J'ai rempli les Items de ma ComboBox par Binding.
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <ComboBox Grid.Column="1" x:Name="ProdType" ItemsSource="{ Binding }" DisplayMemberPath="Types" SelectionChanged="ProdType_SelectionChanged" />
    Et mon dataContext est le resultat d'une requête SQL sur une BDD.

  9. #9
    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 : 44
    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
    Par défaut
    Citation Envoyé par SKone Voir le message
    En fait MaComboBox.ItemSelected me donne la valeur de l'ancienne valeur séléctionné.
    Euh... t'es sûr ?
    Quand j'ai testé j'ai vu qu'effectivement le Text n'était pas encore changé dans l'évènement SelectionChanged, mais le SelectedItem est bien changé...

    Citation Envoyé par SKone Voir le message
    J'ai rempli les Items de ma ComboBox par Binding.
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <ComboBox Grid.Column="1" x:Name="ProdType" ItemsSource="{ Binding }" DisplayMemberPath="Types" SelectionChanged="ProdType_SelectionChanged" />
    Et mon dataContext est le resultat d'une requête SQL sur une BDD.
    Oui, mais concrètement, tu affectes un objet de quel type au DataContext ? DataTable ? DataView ?

    Et la valeur de ton SelectedItem, ce serait pas un DataRowView plutôt qu'un DataView ? Si c'est ça, tu peux récupérer le texte comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string text = (ProdType.SelectedItem as DataRowView)[ProdType.DisplayMemberPath];

  10. #10
    Membre éclairé Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Par défaut
    Si si tu as raison le text donne la valeur de l'ancienne valeur et SelectedItem le courant.
    J'affecte mon DataContext avec un DataTable. Et donc ton code fonctionne.
    Merci
    Et j'ai une question on ne peut pas affecté un DataContext à un controleur par exemple lorsque je fais :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    query = "SELECT Type.Nom    AS Types    FROM Type    ORDER BY Type.Nom    ASC";
    Connection = new MySqlConnection(connString);
    MySqlDataAdapter da = new MySqlDataAdapter(query, Connection);
    da.Fill(contentsTable1);
    ProdType.DataContext = contentsTable1;

    Et dans mon xaml :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <ComboBox Grid.Column="1" x:Name="ProdType" ItemsSource="{ Binding }" DisplayMemberPath="Types" SelectionChanged="ProdType_SelectionChanged" />

    J'ai une exception de type XamlParseException
    Merci

Discussions similaires

  1. [PL/SQL]Récupere la valeure courante d'un trigger
    Par ludovic85 dans le forum Oracle
    Réponses: 11
    Dernier message: 08/08/2006, 15h16
  2. Modifier la valeur courante de l'auto-increment
    Par Matth_S dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 09/03/2006, 14h02
  3. Selectionner la valeur courante d'une liste
    Par genova dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/01/2006, 20h46
  4. [C#] Combobox en DropDwnList et valeur nulle
    Par chasis.fan dans le forum C#
    Réponses: 3
    Dernier message: 13/12/2005, 12h29
  5. Réponses: 1
    Dernier message: 03/12/2005, 12h24

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