Binden von Windows Forms-Steuerelementen an Daten in .NET Framework-Anwendungen
Hinweis
Datasets und verwandte Klassen sind ältere .NET-Technologien aus den frühen 2000er Jahren, die es Anwendungen ermöglichen, mit Daten im Arbeitsspeicher zu arbeiten, während die Anwendungen von der Datenbank getrennt sind. Die Technologien sind besonders nützlich für Anwendungen, die es Benutzern ermöglichen, Daten zu ändern und die Änderungen wieder in der Datenbank zu speichern. Obwohl sich Datasets als sehr erfolgreiche Technologie erwiesen haben, empfehlen wir, dass neue .NET-Anwendungen Entity Framework Core verwenden. Entity Framework bietet eine natürlichere Möglichkeit, mit tabellarischen Daten als Objektmodelle zu arbeiten, und verfügt über eine einfachere Programmierschnittstelle.
Sie können Daten für Benutzer der Anwendung anzeigen, indem Sie Daten an Windows Forms binden. Zum Erstellen dieser datengebundenen Steuerelemente ziehen Sie Elemente aus dem Datenquellenfenster in den Windows Forms-Designer in Visual Studio.
Tipp
Wenn das Fenster Datenquellen nicht sichtbar ist, können Sie es öffnen, indem Sie Ansicht>Weitere Fenster>Datenquellen auswählen oder UMSCHALT+ALT+D drücken. Sie müssen ein Projekt in Visual Studio geöffnet haben, um das Fenster Datenquellen sehen zu können.
Bevor Sie Elemente ziehen, können Sie den Typ des Steuerelements festlegen, an das Sie binden möchten. Je nachdem, ob Sie die Tabelle selbst oder eine einzelne Spalte auswählen, werden unterschiedliche Werte angezeigt. Sie können auch benutzerdefinierte Werte festlegen. Für eine Tabelle bedeutet Details, dass jede Spalte an ein separates Steuerelement gebunden ist.
BindingSource- und BindingNavigator-Steuerelemente
Die BindingSource-Komponente dient zwei Zwecken. Erstens stellt sie eine Abstraktionsebene bereit, wenn die Steuerelemente an Daten gebunden werden. Die Steuerelemente des Formulars sind an die Komponente BindingSource gebunden und nicht direkt an eine Datenquelle. Zweitens kann so eine Auflistung von Objekten verwaltet werden. Wenn Sie zur BindingSource-Komponente einen Typ hinzuzufügen, wird eine Liste dieses Typs erstellt.
Weitere Informationen über die BindingSource-Komponente finden Sie unter:
BindingSource component overview (Übersicht über die BindingSource-Komponente)
BindingSource component architecture (Architektur der BindingSource-Komponente)
Das BindingNavigator-Steuerelement bietet eine Benutzeroberfläche für die Navigation durch die von einer Windows-Anwendung angezeigten Daten.
Binden an Daten in einem DataGridView-Steuerelement
Für ein DataGridView-Steuerelement ist die gesamte Tabelle an dieses einzelne Steuerelement gebunden. Wenn Sie eine DataGridView-Instanz auf das Formular ziehen, wird auch eine Toolleiste zum Navigieren in Datensätzen (BindingNavigator) angezeigt. Die Komponenten DataSet, TableAdapter, BindingSource und BindingNavigator werden in der Komponentenleiste angezeigt. In der folgenden Abbildung wird auch eine TableAdapterManager-Instanz hinzugefügt, da die Tabelle „Customers“ eine Beziehung zur Tabelle „Orders“ aufweist. Diese Variablen sind im automatisch generierten Code alle als private Member in der Formularklasse deklariert. Der automatisch generierte Code zum Ausfüllen der DataGridView-Instanz befindet sich im Form_Load
-Ereignishandler. Der Code zum Speichern der Daten zur Aktualisierung der Datenbank befindet sich im Ereignishandler Save
für die BindingNavigator-Instanz. Sie können diesen Code nach Bedarf verschieben oder ändern.
Sie können das Verhalten der DataGridView- und BindingNavigator-Instanz anpassen, indem Sie auf das Smarttag in der oberen rechten Ecke klicken:
Wenn die Steuerelemente, die Ihre Anwendung benötigt, nicht innerhalb des Fensters Datenquellen verfügbar sind, können Sie Steuerelemente hinzufügen. Weitere Informationen finden Sie unter Hinzufügen benutzerdefinierter Steuerelemente zum Datenquellenfenster.
Sie können auch Elemente aus dem Fenster Datenquellen auf Steuerelemente ziehen, die sich bereits in einem Formular befinden, um das Steuerelement an Daten zu binden. Bei einem Steuerelement, das bereits an Daten gebunden ist, werden die Datenbindungen auf das Element zurückgesetzt, das zuletzt auf das Steuerelement gezogen wurde. Damit ein Steuerelement ein gültiges Ablageziel ist, muss es in der Lage sein, den zugrunde liegenden Datentyp des Elements anzuzeigen, das aus dem Fenster Datenquellen auf das Steuerelement gezogen wird. Es ist z. B. nicht zulässig, ein Element mit dem Datentyp DateTime auf ein CheckBox zu ziehen, da das CheckBox nicht in der Lage ist, ein Datum darzustellen.
Binden an Daten in einzelnen Steuerelementen
Wenn Sie eine Datenquelle an Details binden, wird jede Spalte des Datasets an ein eigenes Steuerelement gebunden.
Wichtig
Beachten Sie, dass Sie in der vorherigen Abbildung aus der Orders-Eigenschaft der Customers-Tabelle ziehen, nicht aus der Orders-Tabelle. Durch die Bindung an die Customer.Orders
-Eigenschaft werden Navigationsbefehle, die in der DataGridView-Instanz erstellt werden, sofort in den Detailsteuerelementen reflektiert. Wenn Sie sie aus der Orders-Tabelle ziehen würden, wären die Steuerelemente zwar immer noch an das Dataset gebunden, würden aber nicht mit der DataGridView-Instanz synchronisiert werden.
Die folgende Abbildung zeigt die standardmäßigen datengebundenen Steuerelemente, die dem Formular hinzugefügt werden, nachdem die Orders-Eigenschaft in der Customers-Tabelle an Details im Fenster Datenquellen gebunden ist.
Beachten Sie auch, dass jedes Steuerelement über ein Smarttag verfügt. Dieses Tag ermöglicht Anpassungen, die nur für dieses Steuerelement gelten.