Listbox - selection synchonisée [débuant]

cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011 - 13 janv. 2008 à 15:41
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 - 15 janv. 2008 à 22:41
Bonjour,

Je dispose de 4 listbox et je souhaiterais que le fait de selectionner un item dans chacune de cette lisbox implique la selection au meme index dans les 3 autres.
J'ai codé :

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            listBox2.SetSelected(listBox1.SelectedIndex, true);
            listBox3.SetSelected(listBox1.SelectedIndex,true);
            listBox4.SetSelected(listBox1.SelectedIndex,true);
        }

        private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            listBox1.SetSelected(listBox2.SelectedIndex, true);
            listBox3.SetSelected(listBox2.SelectedIndex, true);
            listBox4.SetSelected(listBox2.SelectedIndex, true);

        }

        private void listBox3_SelectedIndexChanged(object sender, EventArgs e)
        {
            listBox1.SetSelected(listBox3.SelectedIndex, true);
            listBox2.SetSelected(listBox3.SelectedIndex, true);
            listBox4.SetSelected(listBox3.SelectedIndex, true);

        }

        private void listBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
            listBox1.SetSelected(listBox4.SelectedIndex, true);
            listBox2.SetSelected(listBox4.SelectedIndex, true);
            listBox3.SetSelected(listBox4.SelectedIndex, true);
        }

Bien entendu j'obtiens une boucle infinie puisque que chaque selection d'un item implique l'evenement selection d'un autre qui reselectionne le premier.. etc

J'ai essayé d'inclure des conditions avec des variable booleenes mais je me suis vite emmélé.. je suis perdu..
Pourriez vous m'aider ?

Merci d'avance,
Cordialement
Anz.

5 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
14 janv. 2008 à 11:30
je verrai bien un truc du genre :

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listBox1.Tag == null || !listBox1.Tag) {
               listBox1.Tag = true;
               listBox2.SetSelected(listBox1.SelectedIndex, true);
               listBox1.Tag = false;
            }
        }

ainsi, listBox1 déclenche la mise à jour de ListBox2 qui déclenchera celle de ListBox3... et enfin listBox4 pour ListBox1.

Le fait de mettre True/False dans le Tag permet d'interrompre la boucle (il est à mettre sur toutes les listboxes)

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
14 janv. 2008 à 12:12
Bonjour, et merci pour ta réponse,

Le problème est que je dois pouvoir selectionner l'item dans n'importe quelle des listbox et pas seuleument la listbox 1.
Si je suis ton raisonnement, la selection ne se fait sur les autres que si la premiere a lieu sur la listbox1 non ?

Merci d'avance,
Anz.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
14 janv. 2008 à 15:12
non... ca marche avec toute... elles sont chainées

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
15 janv. 2008 à 17:17
Ca m'a l'air pas mal seulement j'obitens une erreur : "l'opérateur ! ne peut être appliqué à une opérande de type 'objet' ".
Bien entendu quand je retire la partie " || !listbox1.tag " cela fonctionne ; toutes les listbox sont selectionner mais ensuite cela ne fonctionne plus.

Pourrais-tu m'en dire plus ?

Merci de ton attention,

Cordialement,
Anz.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 janv. 2008 à 22:41
ooops...

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listBox1.Tag == null || !(bool)listBox1.Tag) {
               listBox1.Tag = true;
               listBox2.SetSelected(listBox1.SelectedIndex, true);
               listBox1.Tag = false;
            }
        }
voila qui devrait être mieux

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
Rejoignez-nous