Existe-t-il un moyen d'ajouter un élément à un WinForms ListBox, au début de la liste sans réécrire la liste entière dans une boucle?
Une autre façon de résoudre mon problème serait d'afficher ListBox dans l'ordre inverse (dernier élément en haut) mais je ne sais pas comment le faire.
Mon contrôle ListBox est utilisé comme un visualiseur de journaux où l'entrée la plus récente doit être en haut.
Utilisez la méthode Insert
sur les éléments de votre ListBox
.
Si je comprends bien, ne pouvez-vous pas utiliser la méthode Insert(int index, object item)
? Par exemple:
myListBox.Items.Insert(0, "First");
Cela insère "Premier" comme premier élément de la zone de liste.
Une option peut consister à utiliser la méthode .Sort () de ListBox http://msdn.Microsoft.com/en-us/library/system.windows.forms.listbox.sort.aspx
L'autre est bien sûr de placer vos éléments dans une liste générique et d'ajouter/supprimer des éléments de cette liste au lieu de directement dans la ListBox. Utilisez la liste comme source de données pour votre ListBox.
Vous devriez pouvoir définir l'ordre de tri dans votre source de données si vous horodatez les événements du journal.
Je n'ai aucune preuve scientifique pour me soutenir ici, mais je pense qu'une zone de texte est plus performante pour gérer la visualisation des journaux. Vous pouvez également configurer facilement le défilement automatique et si vous souhaitez copier quelque chose, il ne nécessitera aucun codage.