Übersicht über die Datenbindung (Windows Forms .NET)

In Windows Forms können Sie nicht nur an herkömmliche Datenquellen binden, sondern auch an beinahe alle Strukturen, die Daten enthalten. Sie können an ein Array von Werten binden, die Sie zur Laufzeit berechnen, aus einer Datei lesen oder aus den Werten anderer Steuerelemente ableiten.

Darüber hinaus können Sie jede Eigenschaft eines beliebigen Steuerelements an die Datenquelle binden. Bei der herkömmlichen Datenbindung binden Sie die Anzeigeeigenschaft, z. B. die Text-Eigenschaft eines TextBox-Steuerelements, normalerweise an die Datenquelle. Mit .NET haben Sie außerdem die Möglichkeit, weitere Eigenschaften durch Bindung festzulegen. Mithilfe der Bindung können Sie folgende Aufgaben ausführen:

  • Festlegen der Grafik eines Bildsteuerelements.

  • Festlegen der Hintergrundfarbe für ein oder mehrere Steuerelemente.

  • Festlegen der Größe von Steuerelementen.

Datenbindung ist grundsätzlich ein automatisches Verfahren zum Festlegen der Laufzeitzugriffseigenschaften eines Steuerelements in einem Formular.

Mit ADO.NET können Sie viele verschiedene Datenstrukturen entsprechend den Bindungsanforderungen der Anwendung und der Daten erstellen, mit denen Sie arbeiten. Möglicherweise möchten Sie eigene Klassen erstellen, die Daten in Windows Forms bereitstellen oder verwenden. Diese Objekte können ein unterschiedliches Maß an Funktionalität und Komplexität aufweisen. Von der grundlegenden Datenbindung bis hin zur Bereitstellung von Entwurfszeitunterstützung, Fehlerüberprüfung, Änderungsbenachrichtigung oder sogar Unterstützung für ein strukturiertes Rollback der an den Daten selbst vorgenommenen Änderungen.

Consumer von Datenbindungsschnittstellen

In den folgenden Abschnitten werden zwei Gruppen von Benutzeroberflächenobjekten beschrieben. Die erste Gruppe von Schnittstellen wird von den Erstellern der Datenquellen in den Datenquellen implementiert. Die Datenquellenconsumer wie die Windows Forms-Steuerelemente oder -Komponenten implementieren diese Schnittstellen. Die zweite Gruppe von Schnittstellen ist für die Verwendung durch Komponentenautoren gedacht. Komponentenautoren verwenden diese Schnittstellen, wenn sie eine Komponente erstellen, die die von der Windows Forms-Datenbindungs-Engine zu nutzende Datenbindung unterstützt. Sie können diese Schnittstellen in Klassen implementieren, die Ihrem Formular zugeordnet sind, um die Datenbindung zu aktivieren. Jeder Fall stellt eine Klasse dar, die eine Schnittstelle implementiert, die wiederum die Interaktion mit Daten ermöglicht. Visual Studio-Datenentwurfstools für die schnelle Anwendungsentwicklung (Rapid Application Development (RAD)) nutzen bereits die Vorteile dieser Funktionen.

Schnittstellen für die Implementierung durch Ersteller von Datenquellen

Die Windows Forms-Steuerelemente implementieren die folgenden Schnittstellen:

  • IList-Schnittstelle

    Eine Klasse, die die IList-Schnittstelle implementiert, kann ein Array-, ArrayList- oder CollectionBase-Objekt sein. Hierbei handelt es sich um indizierte Listen von Elementen vom Typ Object und die Listen müssen homogene Typen enthalten, da das erste Element des Indexes den Typ bestimmt. IList steht nur zur Laufzeit für die Bindung zur Verfügung.

    Hinweis

    Wenn Sie eine Liste von Geschäftsobjekten für die Bindung mit Windows Forms erstellen möchten, sollten Sie die Verwendung von BindingList<T> erwägen. BindingList ist eine erweiterbare-Klasse, die die primären Schnittstellen für die bidirektionale Windows Forms-Datenbindung implementiert.

  • IBindingList-Schnittstelle

    Eine Klasse, die die IBindingList-Schnittstelle implementiert, bietet wesentlich anspruchsvollere Datenbindungsfunktionen. Diese Implementierung bietet Ihnen grundlegende Sortierfunktionen und Änderungsbenachrichtigungen. Beide sind nützlich, wenn sich die Elemente der Liste ändern und wenn sich die Liste selbst ändert. Die Änderungsbenachrichtigung ist wichtig, wenn Sie mehrere Steuerelemente an dieselben Daten binden möchten. Es hilft Ihnen dabei, Datenänderungen, die in einem der Steuerelemente vorgenommen werden, auf die anderen gebundenen Steuerelemente zu übertragen.

    Hinweis

    Die Benachrichtigung über Änderungen wird für die IBindingList-Schnittstelle durch die Eigenschaft SupportsChangeNotification aktiviert. Ist diese auf ListChanged festgelegt, wird ein true-Ereignis ausgelöst, das anzeigt, dass sich die Liste oder ein Element in der Liste geändert hat.

    Der Änderungstyp wird durch die Eigenschaft ListChangedType des Parameters ListChangedEventArgs beschrieben. Wenn das Datenmodell aktualisiert wird, werden daher alle abhängigen Ansichten, wie z.B. andere Steuerelemente, die an die gleiche Datenquelle gebunden sind, ebenfalls aktualisiert. In der Liste enthaltene Objekte müssen die Liste jedoch benachrichtigen, wenn sie sich ändern, sodass die Liste das ListChanged-Ereignis auslösen kann.

    Hinweis

    Das BindingList<T>-Objekt stellt eine generische Implementierung der IBindingList-Schnittstelle bereit.

  • IBindingListView-Schnittstelle

    Eine Klasse, die die IBindingListView-Schnittstelle implementiert, bietet alle Funktionen einer Implementierung von IBindingList zusammen mit der Filterung und erweiterten Sortierung. Diese Implementierung bietet zeichenfolgenbasierte Filterung und die mehrspaltige Sortierung mit Eigenschaftendeskriptor-Richtungspaaren.

  • IEditableObject-Schnittstelle

    Eine Klasse, die die IEditableObject-Schnittstelle implementiert, ermöglicht es, ein Objekt zu steuern, wenn Änderungen an diesem Objekt festgelegt werden. Diese Implementierung unterstützt die Methoden BeginEdit, EndEdit und CancelEdit, mit denen Sie ein Rollback der Änderungen am Objekt ausführen können. Nachfolgend wird die Funktionsweise der Methoden BeginEdit, EndEdit und CancelEdit kurz erläutert und erklärt, wie diese zusammenarbeiten, um ein mögliches Rollback von Änderungen an den Daten zu ermöglichen:

    • Die Methode BeginEdit signalisiert den Start der Bearbeitung eines Objekts. Ein Objekt, das diese Schnittstelle implementiert, muss alle Updates nach dem BeginEdit-Methodenaufruf so speichern, dass die Updates verworfen werden können, falls die Methode CancelEdit aufgerufen wird. In der Windows Forms-Datenbindung können Sie BeginEdit mehrmals im Rahmen einer einzelnen Bearbeitungstransaktion aufrufen (z. B. BeginEdit, BeginEdit, EndEdit). Implementierungen von IEditableObject sollten verfolgen, ob BeginEdit bereits aufgerufen wurde, und nachfolgende Aufrufe von BeginEdit ignorieren. Da diese Methode mehrfach aufgerufen werden kann, ist es wichtig, dass die nachfolgenden Aufrufe der Methode nicht destruktiv sind. Nachfolgende BeginEdit-Aufrufe können die vorgenommenen Aktualisierungen nicht zerstören oder die Daten ändern, die im ersten BeginEdit-Aufruf gespeichert wurden.

    • Die EndEdit-Methode überträgt alle Änderungen seit dem Aufruf von BeginEdit per Push in das zugrunde liegende Objekt, wenn sich das Objekt gerade im Bearbeitungsmodus befindet.

    • Mit der CancelEdit-Methode werden alle an am Objekt vorgenommenen Änderungen verworfen.

    Weitere Informationen dazu, wie die Methoden BeginEdit, EndEdit und CancelEdit funktionieren, finden Sie unter Zurückspeichern von Daten in die Datenbank.

    Dieser Transaktionsaspekt der Datenfunktionen wird vom DataGridView-Steuerelement verwendet.

  • ICancelAddNew-Schnittstelle

    Eine Klasse, die die ICancelAddNew-Schnittstelle implementiert, implementiert normalerweise die IBindingList-Schnittstelle und ermöglicht Ihnen, eine Hinzufügung zur Datenquelle mit der AddNew-Methode rückgängig zu machen. Wenn die Datenquelle die IBindingList-Schnittstelle implementiert, sollten Sie sie auch die ICancelAddNew-Schnittstelle implementieren lassen.

  • IDataErrorInfo-Schnittstelle

    Eine Klasse, die die IDataErrorInfo-Schnittstelle implementiert, ermöglicht es Objekten, benutzerdefinierte Fehlerinformationen zu gebundenen Steuerelementen anzubieten:

    • Die Error-Eigenschaft gibt allgemeinen Fehlermeldungstext zurück (z. B. „Ein Fehler ist aufgetreten“).

    • Die Item[]-Eigenschaft gibt eine Zeichenfolge mit der spezifischen Fehlermeldung aus der Spalte zurück (z. B. „Der Wert in der State-Spalte ist ungültig“).

  • IEnumerable-Schnittstelle

    Eine Klasse, die die IEnumerable-Schnittstelle implementiert, wird in der Regel von ASP.NET genutzt. Windows Forms-Unterstützung für diese Schnittstelle ist nur über die BindingSource-Komponente verfügbar.

    Hinweis

    Die BindingSource-Komponente kopiert alle IEnumerable-Elemente zu Bindungszwecken in eine separate Liste.

  • ITypedList-Schnittstelle

    Eine Auflistungsklasse, die die ITypedList-Schnittstelle implementiert, bietet das Feature zum Steuern der Reihenfolge und Festlegen der Eigenschaften, die für das gebundene Steuerelement verfügbar gemacht werden.

    Hinweis

    Wenn Sie die Methode GetItemProperties implementieren und der Array PropertyDescriptor nicht NULL ist, wird der letzte Eintrag im Array der Eigenschaftendeskriptor, der die Listeneigenschaft beschreibt, die eine andere Liste von Elementen ist.

  • ICustomTypeDescriptor-Schnittstelle

    Eine Klasse, die die ICustomTypeDescriptor-Schnittstelle implementiert, stellt dynamische Informationen über sich selbst bereit. Diese Schnittstelle ähnelt ITypedList, wird jedoch für Objekte und nicht für Listen verwendet. Diese Schnittstelle wird von DataRowView verwendet, um das Schema der zugrunde liegenden Zeilen zu projizieren. Eine einfache Implementierung von ICustomTypeDescriptor wird von der CustomTypeDescriptor-Klasse bereitgestellt.

    Hinweis

    Zur Unterstützung von Entwurfszeitbindung an Typen, die das ICustomTypeDescriptor-Objekt implementieren, muss der Typ auch IComponent implementieren und als Instanz im Formular vorhanden sein.

  • IListSource-Schnittstelle

    Eine Klasse, die die IListSource-Schnittstelle implementiert, ermöglicht die listenbasierte Bindung auf Nichtlistenobjekten. Die GetList-Methode von IListSource wird verwendet, um eine bindbare Liste von einem Objekt zurückzugeben, das nicht von IList erbt.IListSource wird von der DataSet-Klasse verwendet.

  • IRaiseItemChangedEvents-Schnittstelle

    Eine Klasse, die die IRaiseItemChangedEvents-Schnittstelle implementiert, ist eine bindbare Liste, die auch die IBindingList-Schnittstelle implementiert. Diese Schnittstelle wird verwendet, um anzuzeigen, ob Ihr Typ ListChanged-Ereignisse des Typs ItemChanged über seine RaisesItemChangedEvents-Eigenschaft auslöst.

    Hinweis

    Implementieren Sie das IRaiseItemChangedEvents-Objekt, wenn Ihre Datenquelle die Eigenschaft bereitstellt, die zuvor beschriebene Ereigniskonvertierung aufzulisten, und mit der BindingSource-Komponente interagiert. Andernfalls führt das BindingSource-Objekt auch die Eigenschaft zur Auflistung der Ereigniskonvertierung aus, wodurch sich die Leistung verschlechtert.

  • ISupportInitialize-Schnittstelle

    Eine Komponente, die die ISupportInitialize-Schnittstelle implementiert, nutzt die Vorteile von Batchoptimierungen, um Eigenschaften festzulegen und Eigenschaften mit gegenseitigen Abhängigkeiten zu initialisieren. ISupportInitialize enthält zwei Methoden:

    • BeginInit signalisiert dem Objekt den Start der Initialisierung.

    • EndInit signalisiert dem Objekt den Abschluss der Initialisierung.

  • ISupportInitializeNotification-Schnittstelle

    Eine Komponente, die die ISupportInitializeNotification-Schnittstelle implementiert, implementiert auch die ISupportInitialize-Schnittstelle. Diese Schnittstelle ermöglicht es Ihnen, andere ISupportInitialize-Komponenten darüber zu informieren, dass die Initialisierung abgeschlossen ist. Die Schnittstelle ISupportInitializeNotification enthält zwei Member:

  • INotifyPropertyChanged-Schnittstelle

    Eine Klasse, die diese Schnittstelle implementiert, ist ein Typ, der ein Ereignis auslöst, wenn sich einer der Eigenschaftswerte ändert. Diese Schnittstelle soll das Muster ersetzen, dass für jede Eigenschaft eines Steuerelements ein Änderungsereignis vorhanden ist. Bei Verwendung in einem BindingList<T>-Objekt sollte ein Geschäftsobjekt die INotifyPropertyChanged-Schnittstelle implementieren, und das BindingList1-Objekt konvertiert PropertyChanged-Ereignisse in ListChanged-Ereignisse des Typs ItemChanged.

    Hinweis

    Damit Änderungsbenachrichtigungen in einer Bindung zwischen einem gebundenen Client und einer Datenquelle auftreten, sollte der gebundene Datenquellentyp die INotifyPropertyChanged-Schnittstelle implementieren (bevorzugt), oder Sie können propertyNameChanged-Ereignisse für den gebundenen Typ bereitstellen, aber Sie sollten nicht Beides durchführen.

Schnittstellen für die Implementierung durch Komponentenautoren

Die folgenden Schnittstellen sind für die Nutzung durch die Windows Forms-Datenbindungs-Engine ausgelegt:

  • IBindableComponent-Schnittstelle

    Eine Klasse, die diese Schnittstelle implementiert, ist eine Nichtsteuerungskomponente, die die Datenbindung unterstützt. Die Klasse gibt die Datenbindungen und den Bindungskontext der Komponente über die Eigenschaften DataBindings und BindingContext dieser Schnittstelle zurück.

    Hinweis

    Wenn Ihre Komponente von Control erbt, müssen Sie die IBindableComponent-Schnittstelle nicht implementieren.

  • ICurrencyManagerProvider-Schnittstelle

    Eine Klasse, die die ICurrencyManagerProvider-Schnittstelle implementiert, ist eine Komponente, die ihr eigenes CurrencyManager-Objekt bereitstellt, um die dieser bestimmten Komponente zugeordneten Bindungen zu verwalten. Der Zugriff auf das benutzerdefinierte CurrencyManager-Objekt wird von der CurrencyManager-Eigenschaft bereitgestellt.

    Hinweis

    Da eine Klasse, die von Control erbt, Bindungen automatisch über ihre BindingContext-Eigenschaft verwaltet, sind Fälle, in denen Sie das ICurrencyManagerProvider-Objekt implementieren müssen, relativ selten.

Von Windows Forms unterstützte Datenquellen

Traditionell wurde die Datenbindung in Anwendungen verwendet, um in Datenbanken gespeicherte Daten zu nutzen. Mit der Datenbindung in Windows Forms können Sie sowohl auf Daten aus Datenbanken als auch auf Daten in anderen Strukturen zugreifen, beispielsweise auf Arrays und Sammlungen. Voraussetzung dafür ist allerdings, dass bestimmte Mindestanforderungen erfüllt sind.

Strukturen, an die eine Bindung erfolgen kann

In Windows Forms ist eine Bindung an eine Vielzahl von Strukturen möglich, von einfachen Objekten (einfache Bindung) bis hin zu komplexen Listen wie z. B. ADO.NET-Datentabellen (komplexe Bindung). Für einfache Bindungen unterstützt Windows Forms die Bindung an die öffentlichen Eigenschaften des einfachen Objekts. Die listenbasierte Bindung von Windows Forms erfordert im Allgemeinen, dass das Objekt die IList-Schnittstelle oder die IListSource-Schnittstelle unterstützt. Wenn Sie die Bindung über eine BindingSource-Komponente herstellen, können Sie außerdem eine Bindung mit einem Objekt herstellen, das die IEnumerable-Schnittstelle unterstützt.

Die folgende Liste zeigt die Strukturen, an die in Windows Forms eine Bindung erfolgen kann.

  • BindingSource

    BindingSource ist die gängigste Windows Forms-Datenquelle und fungiert als Proxy zwischen einer Datenquelle und Windows Forms-Steuerelementen. Das allgemeine Verwendungsmuster für BindingSource besteht darin, Ihre Steuerelemente an BindingSource und BindingSource an die Datenquelle zu binden (z. B. eine ADO.NET-Datentabelle oder ein Geschäftsobjekt). BindingSource stellt Dienste bereit, die die Datenbindung ermöglichen und deren Unterstützung verbessern. So unterstützen z. B. auf Listen basierende Windows Forms-Steuerelemente wie DataGridView und ComboBox keine direkte Bindung an IEnumerable-Datenquellen. Sie können dieses Szenario jedoch unterstützen, indem Sie die Bindung über BindingSource herstellen. In diesem Fall konvertiert BindingSource die Datenquelle in eine IList.

  • Einfache Objekte

    Windows Forms unterstützt die Bindung von Steuerelementeigenschaften an öffentliche Eigenschaften der Instanz eines Objekts unter Verwendung des Typs Binding. Windows Forms unterstützt außerdem die Bindung von listenbasierten Steuerelementen, z. B. die Bindung von ListControl an eine Objektinstanz, wenn BindingSource verwendet wird.

  • Array oder Sammlung

    Um als Datenquelle zu fungieren, muss eine Liste die Schnittstelle IList implementieren. Ein Beispiel wäre ein Array, bei dem es sich um eine Instanz der Klasse Array handelt. Weitere Informationen zu Arrays finden Sie unter Vorgehensweise: Erstellen eines Arrays von Objekten (Visual Basic).

    Im Allgemeinen sollten Sie BindingList<T> verwenden, wenn Sie Listen mit Objekten für die Datenbindung erstellen. BindingList ist eine generische Version der Schnittstelle IBindingList. Die Schnittstelle IBindingList erweitert die Schnittstelle IList um Eigenschaften, Methoden und Ereignisse, die für die bidirektionale Datenbindung benötigt werden.

  • IEnumerable

    Windows Forms-Steuerelemente können an Datenquellen gebunden werden, die nur die IEnumerable-Schnittstelle unterstützen, wenn sie über eine BindingSource-Komponente gebunden sind.

  • ADO.NET-Datenobjekte

    ADO.NET stellt viele Datenstrukturen zur Verfügung, die sich für die Bindung an diese Strukturen eignen. Sie unterscheiden sich hinsichtlich ihrer Ausgereiftheit und Komplexität.

    • DataColumn

      Eine DataColumn ist der wesentliche Baustein einer DataTable, da mehrere Spalten eine Tabelle bilden. Jede DataColumn besitzt eine DataType-Eigenschaft, die bestimmt, welche Art von Daten die Spalte enthält (zum Beispiel der Automobilhersteller in einer Tabelle zur Beschreibung von Kraftfahrzeugen). Sie können ein Steuerelement (z. B. die Eigenschaft Text eines TextBox-Steuerelements) einfach an eine Spalte in einer Datentabelle binden.

    • DataTable

      Eine DataTable ist die Darstellung einer Tabelle, mit Zeilen und Spalten, in ADO.NET. Eine Datentabelle enthält zwei Sammlungen: DataColumn repräsentiert die Datenspalten in einer bestimmten Tabelle (die letztendlich die Art der Daten bestimmen, die in diese Tabelle eingegeben werden können), und DataRow repräsentiert die Datenzeilen in einer bestimmten Tabelle. Sie können eine komplexe Bindung eines Steuerelements an die in einer Datentabelle enthaltenen Informationen vornehmen (z. B. eine Bindung des DataGridView-Steuerelements an eine Datentabelle). Bei der Bindung an eine DataTable handelt es sich um eine Bindung an die Standardansicht der Tabelle.

    • DataView

      Eine DataView ist eine angepasste Ansicht einer einzelnen Datentabelle, die gefiltert oder sortiert werden kann. Eine Datenansicht ist eine „Momentaufnahme“ der Daten, die von komplexen Steuerelementen verwendet wird. Sie können eine einfache Bindung oder eine komplexe Bindung an die Daten in einer Datenansicht vornehmen. Beachten Sie jedoch, dass die Bindung an ein festes „Bild“ der Daten erfolgt und nicht an eine bereinigte, aktualisierte Datenquelle.

    • DataSet

      Ein DataSet ist eine Sammlung von Tabellen, Beziehungen und Beschränkungen der Daten in einer Datenbank. Sie können eine einfache Bindung oder eine komplexe Bindung an die Daten in einem Datensatz vornehmen. Beachten Sie jedoch, dass die Bindung an den Standard-DataViewManager für das DataSet erfolgt (siehe nächster Punkt).

    • DataViewManager

      Ein DataViewManager ist eine angepasste Ansicht des gesamten DataSet, analog zu einer DataView, aber mit Beziehungen. Mit einer DataViewSettings-Sammlung können Sie Standardfilter und Sortieroptionen für alle Ansichten festlegen, die der DataViewManager für eine bestimmte Tabelle umfasst.

Typen der Datenbindung

Windows Forms nutzt zwei Typen der Datenbindung: einfache Bindung und komplexe Bindung. Jeder Typ bietet verschiedene Vorteile.

Typ der Datenbindung Beschreibung
Einfache Datenbindung Die Fähigkeit eines Steuerelements zur Bindung an ein einzelnes Datenelement, z. B. ein Wert in einer Spalte in einer Dataset-Tabelle. Die einfache Datenbindung ist die Art von Bindung, die für Steuerelemente wie TextBox oder Label typisch ist. Diese Steuerelemente zeigen normalerweise nur einen einzelnen Wert an. Tatsächlich kann jede Eigenschaft eines Steuerelements an ein Feld in einer Datenbank gebunden werden. Visual Studio bietet umfassende Unterstützung für dieses Feature.

Weitere Informationen finden Sie unter Navigieren durch Daten und Erstellen eines einfach gebundenen Steuerelements (Windows Forms .NET).
Komplexe Datenbindung Die Fähigkeit eines Steuerelements zur Bindung an mehr als ein Datenelement, in der Regel mehr als ein Datensatz in einer Datenbank. Komplexe Bindung wird auch als listenbasierte Bindung bezeichnet. Beispiele für Steuerelemente, die komplexe Bindung unterstützen, sind die Steuerelemente DataGridView, ListBox und ComboBox. Ein Beispiel für eine komplexe Datenbindung finden Sie unter Vorgehensweise: Binden eines ComboBox-Steuerelements oder ListBox-Steuerelements in Windows Forms an Daten.

Binden der Quellkomponente

Um die Datenbindung zu vereinfachen, ermöglicht Ihnen Windows Forms die Bindung einer Datenquelle an die BindingSource-Komponente und dann das Binden von Steuerelementen an die BindingSource. Sie können die BindingSource in einfachen oder komplexen Bindungsszenarios verwenden. In beiden Fällen fungiert die BindingSource als Mittler zwischen der Datenquelle und gebundenen Steuerelementen und stellt Änderungsbenachrichtigung, Währungsverwaltung und andere Dienste bereit.

Allgemeine Szenarien, die Datenbindung nutzen

Fast jede kommerzielle Anwendung liest Informationen aus Datenquellen der einen oder anderen Art, in der Regel durch Datenbindung. Die folgende Liste zeigt einige der häufigsten Szenarien, die die Datenbindung als Methode zur Darstellung und Bearbeitung von Daten nutzen.

Szenario Beschreibung
Berichterstellung Berichte bieten eine flexible Möglichkeit, Ihre Daten in einem gedruckten Dokument anzuzeigen und zusammenzufassen. Es ist üblich, einen Bericht zu erstellen, der ausgewählte Inhalte einer Datenquelle auf dem Bildschirm oder auf einem Drucker ausgibt. Allgemeine Berichte enthalten Listen, Rechnungen oder Zusammenfassungen. Elemente werden in Listenspalten formatiert, wobei Unterelemente unter den einzelnen Listenelementen organisiert werden. Sie sollten aber das Layout auswählen, das Ihren Daten am besten entspricht.
Dateneingabe Eine gängige Methode, um große Mengen verknüpfter Daten einzugeben oder Benutzer aufzufordern, Informationen einzugeben, ist ein Dateneingabeformular. Benutzer können Informationen eingeben oder mit Textfeldern, Optionsfeldern, Dropdownlisten und Kontrollkästchen eine Auswahl treffen. Informationen werden dann an eine Datenbank übermittelt und dort gespeichert. Die Struktur der Datenbank basiert auf den eingegebenen Informationen.
Master-/Detailbeziehung Eine Master-/Detailanwendung ist ein Format zur Anzeige verknüpfter Daten. Konkret gibt es zwei Datentabellen mit einer Beziehung, die im klassischen Geschäftsbeispiel eine Tabelle „Kunden“ und eine Tabelle „Bestellungen“ mit einer Beziehung zwischen ihnen verbindet, die Kunden und ihre jeweiligen Bestellungen miteinander verknüpft. Weitere Informationen zum Erstellen einer Master-/Detailanwendung mit zwei Windows Forms-DataGridView-Steuerelementen finden Sie unter Vorgehensweise: Erstellen eines Master-/Detailformulars mit zwei DataGridView-Steuerelementen in Windows Forms
Nachschlagetabelle Ein weiteres gängiges Szenario für die Datenanzeige und -bearbeitung ist die Suchtabelle. Häufig wird als Teil einer größeren Datenanzeige ein ComboBox-Steuerelement zum Anzeigen und Bearbeiten von Daten verwendet. Wichtig ist, dass sich die Daten, die im ComboBox-Steuerelement angezeigt werden, von den Daten unterscheiden, die in die Datenbank geschrieben werden. Angenommen, Sie haben ein ComboBox-Steuerelement, das die in einem Lebensmittelladen verfügbaren Artikel anzeigt. In diesem Fall würden Sie auch gerne die Bezeichnungen der Produkte (Brot, Milch, Eier) sehen. Um das Abrufen von Informationen innerhalb der Datenbank und die Datenbanknormalisierung zu vereinfachen, würden Sie die Informationen für die einzelnen Elemente einer bestimmten Bestellung aber wahrscheinlich als Artikelnummern (#501, #603 usw.) speichern. Dadurch besteht eine implizite Verbindung zwischen dem „Anzeigenamen“ des Lebensmittels im ComboBox-Steuerelement des Formulars und der verknüpften Artikelnummer in einer Bestellung. Dies ist der zentrale Aspekt der Tabellensuche. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen einer Suchtabelle mit der BindingSource-Komponente in Windows Forms.

Weitere Informationen