Maison >développement back-end >C++ >Pourquoi mon WinForms DataGridView ne se met-il pas à jour après l'ajout d'éléments à une liste ?

Pourquoi mon WinForms DataGridView ne se met-il pas à jour après l'ajout d'éléments à une liste ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 01:17:43338parcourir

Why Doesn't My WinForms DataGridView Update After Adding Items to a List?

Liaison BindingList à DataGridView dans WinForm

Dans ce scénario WinForm, une classe représentant une personne et une liste sont utilisés, dans le but de lier cette liste à un DataGridView. La liaison réussit initialement, affichant deux lignes correspondant aux éléments ajoutés à la liste. Cependant, les ajouts ultérieurs à la liste ne sont pas automatiquement reflétés dans DataGridView.

Comprendre la liaison

Le problème vient du fait que List n'implémente pas IBindingList. Par conséquent, DataGridView n'est pas au courant des modifications apportées à la liste.

Solution : BindingList

Pour résoudre ce problème, envisagez de lier DataGridView à une BindingList< ;T> plutôt. Cette classe implémente IBindingList, permettant au DataGridView de recevoir des notifications de modifications dans la liste liée.

var list = new BindingList<Person>(persons);
myGrid.DataSource = list;

BindingSource pour encore plus de contrôle

Pour un contrôle encore plus grand sur les données liaison, envisagez d'utiliser un BindingSource comme intermédiaire entre le BindingList et DataGridView.

var list = new List<Person>()
{
    new Person { Name = "Joe", },
    new Person { Name = "Misha", },
};
var bindingList = new BindingList<Person>(list);
var source = new BindingSource(bindingList, null);
grid.DataSource = source;

En employant cette approche, vous pouvez maintenir une liaison cohérente et dynamique entre votre source de données et DataGridView, garantissant que les mises à jour des données sous-jacentes sont reflétées en temps réel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn