Maison >développement back-end >C++ >Comment mettre à jour dynamiquement un DataGridView WinForms lié à une liste ?

Comment mettre à jour dynamiquement un DataGridView WinForms lié à une liste ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-03 06:57:39456parcourir

How to Dynamically Update a WinForms DataGridView Bound to a List?

Comment lier une liste à un DataGridView dans WinForms avec mises à jour de données

Liaison d'une liste vers un DataGridView est une technique utile pour afficher les données sous une forme tabulaire structurée. Cependant, il est essentiel de garantir que la grille se met à jour automatiquement lorsque les données sous-jacentes changent.

Considérez le scénario suivant :

class Person{
    public string Name {get; set;}
    public string Surname {get; set;}
}

Vous pouvez avoir une liste auquel vous ajoutez quelques éléments :

List<Person> persons = new List<Person>();
persons.Add(new Person(){Name="Joe", Surname="Black"});
persons.Add(new Person(){Name="Misha", Surname="Kozlov"});

Dans un premier temps, ces éléments seront affichés dans le DataGridView. Cependant, si vous ajoutez de nouveaux éléments à la liste des personnes, DataGridView ne les affichera pas.

Le problème

Le problème réside dans le fait que la liste n'implémente pas IBindingList, ce qui signifie que DataGridView ne reçoit pas de notifications concernant les modifications apportées au data.

Solution

Pour résoudre ce problème, utilisez une BindingList au lieu d'une liste. Une BindingList implémente IBindingList, fournissant les notifications d'événements nécessaires.

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

Liaison avancée avec BindingSource

Vous pouvez aller plus loin en utilisant un BindingSource, qui fournit des fonctionnalités supplémentaires telles que le tri , le filtrage et la concurrence.

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 suivant ces techniques, vous pouvez lier un Liste à un DataGridView dans WinForms et assurez-vous que la grille reste à jour avec les modifications apportées aux données.

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