Heim >Backend-Entwicklung >C++ >Wie aktualisiere ich eine an eine Liste gebundene WinForms DataGridView dynamisch?

Wie aktualisiere ich eine an eine Liste gebundene WinForms DataGridView dynamisch?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-03 06:57:39459Durchsuche

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

So binden Sie eine Liste an eine DataGridView in WinForms mit Datenaktualisierungen

Binden einer Liste zu einem DataGridView ist eine nützliche Technik zum Anzeigen von Daten in strukturierter Tabellenform. Es muss jedoch unbedingt sichergestellt werden, dass das Raster automatisch aktualisiert wird, wenn sich die zugrunde liegenden Daten ändern.

Stellen Sie sich das folgende Szenario vor:

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

Möglicherweise haben Sie eine Liste zu dem Sie einige Elemente hinzufügen:

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

Zunächst werden diese Elemente in der DataGridView angezeigt. Wenn Sie jedoch neue Elemente zur Personenliste hinzufügen, werden diese von DataGridView nicht angezeigt.

Das Problem

Das Problem liegt darin, dass die Liste nicht implementiert wird IBindingList, was bedeutet, dass DataGridView keine Benachrichtigungen über Änderungen in der erhält Daten.

Lösung

Um dieses Problem zu beheben, verwenden Sie eine BindingList anstelle einer Liste. Eine BindingList implementiert IBindingList und stellt die erforderlichen Ereignisbenachrichtigungen bereit.

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

Erweiterte Bindung mit BindingSource

Sie können dies weiterführen, indem Sie eine BindingSource verwenden, die zusätzliche Funktionen wie Sortieren bereitstellt , Filterung und Parallelität.

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;

Durch Befolgen dieser Techniken können Sie a binden Liste zu einem DataGridView in WinForms hinzufügen und sicherstellen, dass das Raster bei Änderungen in den Daten auf dem neuesten Stand bleibt.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich eine an eine Liste gebundene WinForms DataGridView dynamisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn