none
lier trois combobox à une seule liste de trois choix RRS feed

  • Question

  • Bonjour,

    j'ai une liste de trois choix:

    List<string> choices= new List<string>{"USA", "France", "Italy"}


    je veux lier mes troix combobox à cette liste, et chaque fois l'utilisateur fait son choix les deux autre combobox se mettent à jour automatiquement avec les valeurs restantes, j'ai procédé avec un switch sur selected item de premier combo pour remplir les deux autres:

    private void firstChoiceSelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                string fChoice = (string)firstChoice_Cb.SelectedItem;
                switch (fChoice)
                {
                    case "Italy":
                        secondChoice_Cb.DataContext = new List<string> { "USA", "France" };
                        break;
                    case "France":
                        secondChoice_Cb.DataContext = new List<string> { "USA", "Italy" };
                        break;
                    case "USA":
                        secondChoice_Cb.DataContext = new List<string> {"Italy", "France"};
                        break;
                    default:
                        break;
                }
            }

    et je veux une fois le deuxième choix est fait, le troisième combobox prend la valeur restante des trois valeurs,

    est-ce que il y a une autre façon de faire???

    binding les trois combobox à une observableCollection<string> ??

    Merci d'avance

    mercredi 3 juillet 2013 14:30

Réponses

  • Bonjour

    Le plus simple :

       private void combo1_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                List<string> myList = new List<string>();
                myList = (from s in choices
                          where s != (String)combo1.SelectedItem
                          select s).ToList();
                combo2.ItemsSource = myList;
            }
    

    On va binder le deuxième combo avec la liste ou on a éliminé ce qui est deja sélectée.
    Pour le troisième on doit éliminer ce qui est déjà sélectée dans le premier combo et le deuxième combo.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    • Marqué comme réponse Aurel Bera mardi 9 juillet 2013 08:50
    • Non marqué comme réponse Aurel Bera mardi 9 juillet 2013 09:38
    • Marqué comme réponse Aurel Bera mardi 9 juillet 2013 09:39
    vendredi 5 juillet 2013 11:02
  • Bonjour,

    Lorsque je dispose d'un bindingsource dans ma page de production, j'utilise la propriété filter du bindingsource .

    la sélection d'un item dans la liste informe la valeur du filter et je charge ma liste suivante avec le résultat.

    Ce qui me donne :

    mavariable = listbox.selectedItem

    bindingsource.filter  = mavariable

      ListBox2.DataSource = bindingsource
      ListBox2.DataMember = "matable"
      ListBox2.DataTextField = "monchampdetrie"
      ListBox2.DataValueField = "ID"
      ListBox2.DataBind()

    ma liste se remplie directement avec le tri prévu sur une sélection dans la première liste. En cas de besoin je peux aussi remplir le bindingsource 

    avec une condition  " where mavariable = et la sélection dans la listbox".

    La propriété filter accepte aussi 

    bindingsource.Filter = "mon1echampdetri = '" & matextbox.Text & "' AND mon2echampdetri = '" & mavariable & "'"

    Si ça peut aider quelqu'un

    Cordialement


    Jbenon

    • Marqué comme réponse Aurel Bera mardi 9 juillet 2013 09:39
    mardi 9 juillet 2013 09:31

Toutes les réponses