-
trier un listbox
bonjour à tous et toutes
tout d'abord je voudrais vous remerciez pour la qualité de votre site que je consulte souvent surtout quand je suis bloqué lors de mes essais de programmation avec VB.
je débute avec mon premier programme aprés une petite formation en VB(application windows form)
j'ai actuellement un soucis , j'ai fais des recherches un peu partout mais je n'avance pas.
voila mon problème
j'ai un un petit programme de calcul pour les candidats d'un concours animalier qui fonctionne comme suit:
on entre les notes de chaque animal puis un bouton fait l'addition et affiche le résultat dans dans listbox qui sera du genre
x : 86,789
m : 87,236
o : 85,656
z : 86,546
etc..
ce que je voudrais c'est créer un bouton "classement" qui lorsqu'on appui dessus classe les candidat selon la note obtenue comme suit:
m : 87,236
x : 86,789
z : 86,546
o : 85,656
Merci d'avance
-
Puisque vous ne fournissez pas de code, il est difficile de déterminer où intervenir.
En me basant sur le fait que vous employez certains mots et pas d'autres pour décrire votre problème, je suppose que vous insérez des éléments dans votre ListBox en utilisant Items.Add.
Il y a également de fortes chances que l'élément que vous insérez soit une concaténation du nom de l'animal et de sa note.
Bref, un enfer à trier.
Au lieu de cela, je vous suggère de passer par la propriété DataSource de la ListBox.
1. Créer une classe comportant une propriété pour le nom de l'animal et une propriété pour sa note.
2. Redéfinir la méthode ToString() de cette classe pour faire la concaténation du nom et de la note (pour que ce soit ça qui s'affiche).
3. Créer une liste (List<T> où T est votre classe)
4. A chaque nouvelle note, créer un objet du type de votre classe et l'ajouter à la liste.
5. Trier la liste avec la méthode Sort.
6. Affecter cette liste triée en tant que DataSource à la ListBox
Ceci devrait vous aider :
Code:
ListBox1.DataSource = new BindingList<MyClass>(unsortedListInstance.OrderBy(it => it.Note).ToList());
-
Merci de la réponse j'ai réglé le problème au lieu de la listbox j ai mis une listview avec des colonnes avec en premier la note de l'animal et j'ai mis
"sorting" sur "descending" ainsi le tri se fait automatiquement selon les ajouts.(enfin)
mon nouveau problème est faire en sorte en cliquant sur bouton ouvrir un savefiledialog afin de pouvoir enregistré tout le contenu de la listview dans un fichier txt
je precise que j'ai un listview avec quatre colonnes
Merci
-
Bonjour,
Vous n'avez pas réglé votre problème, vous l'avez contourné.
Et de manière irréfléchie, ce qui fait que vous vous retrouvez avec d'autres problèmes que vous n'auriez pas eu en suivant la méthode que je vous ai donné.
Avec une liste qui sert de DataSource, vous avez tout ce qu'il faut pour faire du tri, ou de la sérialisation.
Avec cette liste qui vous sert de DataSource, vous pouvez vous bénéficier d'automatisme d'affichage sur un grande partie des composant gérant des enregistrements (mais pas sur la ListView qui n'est pas faite pour ça).
Au pire si vous voulez une présentation en colonne, utilisez une DataGridView (qui a une propriété DataSource comme la ListBox).
-
bonjour
C’était urgent pour moi donc il fallait une solution sur le moment, mais j'exploiterais votre solution prochainement. Merci encore
j'ai aussi trouvé la solution pour l'enregistrement en fichier texte de la listview( la présentation en colonne n'est pas nécessaire)
sujet résolu