[C# Winforms] Deux listbox "associées"

Deux listbox "associées" [C# Winforms] - C#/.NET managed - Programmation

Marsh Posté le 01-08-2005 à 22:55:42    

Bonsoir :)
 
Je fais un programme où j'ai besoin que 2 ou plusieurs listbox ai leur contenu
associé.
 
Par exemple, je rentre simultanément un mot dans la première listbox et la
seconde... bon et finalement j'en rentre une petite floppée. Pas de problème
pour deux listbox de base, quand je sélectionne le 3ème mot de la première
listbox, je n'ai qu'a sélectionner le 3ème mot de la seconde listbox.
 
Problème : je veux par exemple ranger les mots dans l'ordre alphabétique
dans la première listbox. Comment faire en sorte que les autres listbox
suivent le mouvement et que leurs mots soient déplacés également de la
même façon pour rester toute en corrélation ?
 
Je vous remercie de vos idées :)

Reply

Marsh Posté le 01-08-2005 à 22:55:42   

Reply

Marsh Posté le 02-08-2005 à 00:26:55    

Il me semble qu en utilisant un delegate tu peux mettre a jour tes autres listes lors de la modification de l une d entre elles non ? (le principe du delegate est que pour une methode donnée par exemple tu vas declencher l execution d autres methodes).

Reply

Marsh Posté le 02-08-2005 à 08:41:57    

J'ai regardé les délégués de la listbox et aucun ne conviennent :( Il n'y a pas de deleguate qui se déclenchent pour des changements d'index des items de la listbox ! Pareil j'ai tenté de faire un deleguate sur les items carrément, mais là c'est un peu la même foire, il s'agit d'un object donc on peut rien appliquer dessus...

Reply

Marsh Posté le 02-08-2005 à 11:05:25    

ListBox : SelectedIndexChanged ne correspond pas ? Ou alors j'ai mal compris la question ?

Reply

Marsh Posté le 02-08-2005 à 12:24:27    

Ohla... je suis désolé... j'ai carrément zappé, je pensais que  c'était quand on modifiait l'index de l'item sélectionné !!!! .... donc ça me convient sans problème :) Je te remercie pfiouuu... :)

Reply

Marsh Posté le 02-08-2005 à 12:49:18    

Non c'est bien ce que je pensais, c'est quand on change d'item tout simplement...
En fait moi je voudrais un deleguate sur par exemple quand un item de la ListBox voit son index se modifier (et sa position du même coup). Par exemple si j'effectue un tri alphabétique sur la listbox, je veux être prévenu des modifications :)

Reply

Marsh Posté le 02-08-2005 à 14:02:35    

J'avais mal compris en effet :)
Je ne sais pas comment tu implémentes ton algorithme de tri, mais pourquoi est-ce que tu ne fais pas un sort sur les 2 listbox quand tu ajoutes un mot ?

Reply

Marsh Posté le 02-08-2005 à 17:16:09    

C'est pas le même mot sur toutes les listbox, mais il faut que les mots concordent toujours... comme dans un dictionnaire français anglais par exemple, ou il y aurait deux listbox, un pour l'anglais un pour le français...
L'anglais doit toujours avoir le bon mot français qui correspond :) Mais si je classe les mots en anglais... comment faire pour que ceux en français soient dans le bon ordre ?
 
Oui si je fais mon algo de tri moi même je peux me débrouiller pour que ça modifie bien les autres en conséquences. C'est d'ailleurs la seule solution que j'avais trouvé.
 
En fait ce que j'aurais bien aimé c'est avoir un deleguate qui réagit si l'index d'un item est modifiée... comme ça je peux l'appliquer ensuite aux autres aussi !

Reply

Marsh Posté le 02-08-2005 à 17:39:01    

Si j'ai bien compris (re ;) ), quand tu fais un tri sur le listbox anglais (pour rester dans l'exemple) ça te fait le tri sur le listbox français aussi - mais un tri par rapport à l'anglais c'est ça ?
 
De manière intuitive j'aurais plutôt pensé à faire le tri par rapport au français, et ensuite à brancher sur le SelectedIndexChanged de façon à modifier l'index du mot sélectionné dans le listbox anglais (resp. français) si tu sélectionnes un autre mot dans le listbox français (resp. anglais).
 
Pour rester sur ta méthode, c'est toi qui implémente ta méthode de tri, et comme Listbox ne dispose pas des events correspondant à ce que tu veux faire tu vas devoir amha rester sur une solution faite main.

Reply

Marsh Posté le 02-08-2005 à 22:16:00    

Oui voilà donc c'est bien ce que je pensais :(
 
Par contre en fait je viens de trouver une autre solution que j'utilise d'ailleurs maintenant qui est pas trop mal ! Le truc c'est d'utiliser une DataTable et de la binder avec la listbox, ... la DataTable contient autant de colonnes que j'ai de listbox, et chaque listbox est bindé avec une colonne...
 
Je peux ajouter une ligne dans cette table, la déplacer... elle sera toujours à jour partout :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed