J'ai adopté le modèle suivant pour en mettant ListViewItems dans un ListView avec plusieurs colonnes (lorsque je veux afficher des informations sur une liste de types MyObject
), et je suis juste curieux de voir si c'est la meilleure façon de accomplir cette tâche, ou s'il y a quelque chose de plus efficace et lisible dans le code:Meilleure façon de gérer ListViewItems dans un ListView détaillé?
- Créer une classe
ListViewItem
héritée qui prend un objetMyObject
dans le constructeur - Je vais appeler cetteMyObjectListViewItem
- et une méthodeRefresh()
qui efface et re -popule les sous-éléments ListViewItem. - Remplissez ListView avec mes nouveaux éléments MyObjectListViewItem.
exemple:
public MyObject MyObject { get; set; }
public MyObjectListViewItem(MyObject myObj)
{
MyObject = myObj;
this.Refresh();
}
public void Refresh()
{
this.SubItems.Clear();
this.Text = myObj.FirstColumnProperty;
this.SubItems.Add(myObj.SecondColumnProperty); // etc...
}
Suggestions? De meilleures façons?
Cela ne fonctionnera pas. ListViews sous WinForms ne supporte pas BindingSources. – Grammarian
Alas Forms.ListView ne prend pas en charge BindingSources. Considérez l'utilisation d'un DataGridView qui se connecte à la source de liaison. Chaque fois qu'un élément est ajouté ou supprimé de la source de liaison, la vue de données est automatiquement mise à jour. –