Übergeben von Daten zwischen Formularen

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. Sie 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.

Dieses Tutorial enthält eine Schritt-für-Schritt-Anleitung für die Datenübergabe von einem Formular zum anderen. Mit dem Verwenden der Tabellen „Customers“ und „Orders“ von Northwind können Benutzer*innen in einem Formular einen Kunden auswählen und mit einem zweiten die Bestellungen des ausgewählten Kunden anzeigen. Dieses Tutorial zeigt, wie Sie eine Methode in dem zweiten Formular erstellen, die Daten aus dem ersten Formular empfängt.

Hinweis

Dieses Tutorial zeigt nur eine Möglichkeit der Datenübergabe zwischen Formularen. Es gibt weitere Optionen zum Übergeben von Daten an ein Formular, z. B. das Erstellen eines zweiten Konstruktors zum Empfangen von Daten oder das Erstellen einer öffentlichen Eigenschaft, die Daten aus dem ersten Formular empfangen kann.

Die in diesem Tutorial veranschaulichten Aufgaben umfassen:

  • Erstellen eines neuen Windows Forms App (.NET Framework)-Projekts.

  • Erstellen und Konfigurieren eines Datasets mit dem Assistent zum Konfigurieren von Datenquellen.

  • Auswählen des Steuerelements, das für das Formular erstellt werden soll, wenn Elemente aus dem Datenquellenfenster gezogen werden. Weitere Informationen finden Sie unter Festlegen des Steuerelements, das beim Ziehen aus dem Datenquellenfenster erstellt werden soll.

  • Erstellen eines datengebundenen Steuerelements durch Ziehen von Elementen aus dem Datenquellenfenster auf das Formular.

  • Erstellen eines zweiten Formulars mit einem Raster für die Datenanzeige.

  • Erstellen einer TableAdapter-Abfrage für das Abrufen der Bestellungen eines bestimmten Kunden.

  • Übergeben von Daten zwischen Formularen.

Voraussetzungen

Für dieses Tutorial müssen die Workloads .NET-Desktopentwicklung und Datenspeicherung und -verarbeitung in Visual Studio installiert sein. Um diese zu installieren, öffnen Sie Visual Studio-Installer und wählen Ändern (oder Weitere>Ändern) neben der Version von Visual Studio aus, die Sie ändern möchten. Weitere Informationen finden Sie im Artikel Ändern von Visual Studio durch Hinzufügen oder Entfernen von Arbeitsauslastungen und Komponenten.

In diesem Tutorial werden SQL Server Express LocalDB und die Northwind-Beispieldatenbank verwendet.

  1. Wenn Sie nicht über SQL Server Express LocalDB verfügen, installieren Sie diese Komponente entweder über die SQL Server Express-Downloadseite oder über den Visual Studio-Installer. Im Visual Studio-Installer kann SQL Server Express LocalDB als Teil der Workload für die Datenspeicherung und -verarbeitung oder als einzelne Komponente installiert werden.

  2. Installieren Sie die Northwind-Beispieldatenbank, indem Sie die folgenden Schritte ausführen:

    1. Öffnen Sie in Visual Studio das Fenster SQL Server-Objekt-Explorer. (Der SQL Server-Objekt-Explorer wird als Teil der Workload für die Datenspeicherung und -verarbeitung im Visual Studio-Installer installiert.) Erweitern Sie den Knoten SQL Server. Klicken Sie mit der rechten Maustaste auf Ihre LocalDB-Instanz, und wählen Sie Neue Abfrage aus.

      Ein Abfrage-Editor-Fenster wird geöffnet.

    2. Kopieren Sie das Northwind-Transact-SQL-Skript in die Zwischenablage. Dieses T-SQL-Skript erstellt die Northwind-Datenbank von Grund auf neu und füllt sie mit Daten auf.

    3. Fügen Sie das T-SQL-Skript in den Abfrage-Editor ein, und klicken Sie dann auf die Schaltfläche Ausführen.

      Nach kurzer Zeit wird die Ausführung der Abfrage abgeschlossen, und die Northwind-Datenbank wird erstellt.

Erstellen des Windows Forms-App-Projekts

  1. Wählen Sie in Visual Studio im Menü Datei die Optionen Neu>Projekt aus.

  2. Erweitern Sie entweder Visual C# oder Visual Basic im linken Bereich, und wählen Sie dann Windows Desktop aus.

  3. Wählen Sie im mittleren Bereich den Projekttyp Windows Forms-App aus.

  4. Geben Sie dem Projekt den Namen PassingDataBetweenForms und wählen Sie dann OK.

    Das Projekt PassingDataBetweenForms wird erstellt und zum Projektmappen-Explorer hinzugefügt.

Erstellen Sie die Datenquelle.

  1. Klicken Sie zum Öffnen des Fensters Datenquellen im Menü Daten auf Datenquellen anzeigen.

  2. Klicken Sie im Datenquellenfenster auf Neue Datenquelle hinzufügen, um den Assistenten zum Konfigurieren von Datenquellen zu starten.

  3. Wählen Sie auf der Seite Datenquellentyp auswählen die Option Datenbank aus, und klicken Sie auf Weiter.

  4. Stellen Sie sicher, dass Dataset auf der Seite Datenbankmodell auswählen festgelegt ist, und klicken Sie dann auf Weiter.

  5. Führen Sie auf der Seite Wählen Sie Ihre Datenverbindung aus einen der folgenden Schritte aus:

    • Wenn in der Dropdownliste eine Datenverbindung zur Beispieldatenbank „Northwind“ verfügbar ist, wählen Sie diese aus.

    • Klicken Sie auf Neue Verbindung, um das Dialogfeld Add/Modify Connection (Verbindung hinzufügen/ändern) zu öffnen.

  6. Falls die Datenbank ein Kennwort erfordern sollte und die Option für die Einbeziehung vertraulicher Daten aktiviert ist, wählen Sie die Option aus, und klicken Sie dann auf Weiter.

  7. Klicken Sie auf der Seite Save connection string to the Application Configuration file (Verbindungszeichenfolge in der Programmkonfigurationsdatei speichern) auf Weiter.

  8. Erweitern Sie auf der Seite Datenbankobjekte auswählen den Knoten Tabellen.

  9. Wählen Sie die Tabellen Customers und Orders aus, und klicken Sie dann auf Fertig stellen.

    Das NorthwindDataSet wird dem Projekt hinzugefügt, und die Tabellen Customers und Orders werden im Datenquellenfenster angezeigt.

Erstellen des ersten Formulars (Form1)

Sie können ein datengebundenes Raster erstellen (ein DataGridView-Steuerelement), indem Sie den Knoten Customers aus dem Datenquellenfenster auf das Formular ziehen.

So erstellen Sie ein datengebundenes Raster auf dem Formular

Erstellen des zweiten Formulars

Erstellen Sie ein zweites Formular, an das Daten übergeben werden sollen.

  1. Wählen Sie aus dem Menü Projekt die Option Windows Form hinzufügen aus.

  2. Übernehmen Sie den Standardnamen Form2, und klicken Sie auf Hinzufügen.

  3. Ziehen Sie den Hauptknoten Orders aus dem Datenquellenfenster auf Form2.

    Eine DataGridView und eine Toolleiste (BindingNavigator) zum Navigieren durch Datensätze wird auf Form2 angezeigt. NorthwindDataSet, CustomersTableAdapter, BindingSource und BindingNavigator werden auf der Komponentenleiste angezeigt.

  4. Löschen Sie OrdersBindingNavigator aus der Komponentenleiste.

    OrdersBindingNavigator wird von Form2 entfernt.

Hinzufügen einer TableAdapter-Abfrage

Fügen Sie eine TableAdapter-Abfrage zu Form2 hinzu, um die Bestellungen der auf Form1 ausgewählten Kunden zu laden.

  1. Doppelklicken Sie im Projektmappen-Explorer auf die Datei NorthwindDataSet.xsd.

  2. Klicken Sie mit der rechten Maustaste auf OrdersTableAdapter, und wählen Sie Abfrage hinzufügen aus.

  3. Übernehmen Sie die Standardeinstellung für SQL-Anweisung verwenden, und klicken Sie anschließend auf Weiter.

  4. Übernehmen Sie die Standardeinstellung für SELECT-Anweisung, die Zeilen zurückgibt, und klicken Sie anschließend auf Weiter.

  5. Fügen Sie eine WHERE-Klausel zur Abfrage hinzu, sodass Orders auf Grundlage der CustomerID zurückgeben wird. Die Abfrage müsste ungefähr wie folgt aussehen:

    SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry
    FROM Orders
    WHERE CustomerID = @CustomerID
    

    Hinweis

    Überprüfen Sie die korrekte Parametersyntax für Ihre Datenbank. In Microsoft Access würde die WHERE-Klausel beispielsweise wie folgt aussehen: WHERE CustomerID = ?.

  6. Klicken Sie auf Weiter.

  7. Geben Sie für Eingeben eines DataTableMethod-NamensFillByCustomerID ein.

  8. Löschen Sie die Option DataTable zurückgeben, und klicken Sie anschließend Weiter.

  9. Klicken Sie auf Fertig stellen.

Erstellen einer Methode in Form2, die die Daten empfängt

  1. Klicken Sie mit der rechten Maustaste auf Form2, und klicken Sie auf Code anzeigen, um Form2 im Code-Editor zu öffnen.

  2. Fügen Sie den folgenden Code zu Form2 nach der Form2_Load-Methode hinzu:

internal void LoadOrders(String CustomerID)
{
    ordersTableAdapter.FillByCustomerID(northwindDataSet.Orders, CustomerID);
}

Erstellen einer Methode in Form1 zum Übergeben von Daten und Anzeigen von Form2

  1. Klicken Sie in Form1 mit der rechten Maustaste auf das Customer-Datenraster, und klicken Sie dann auf Eigenschaften.

  2. Klicken Sie im Fenster Eigenschaften auf Ereignisse.

  3. Doppelklicken Sie das Ereignis CellDoubleClick.

    Der Code-Editor wird angezeigt.

  4. Aktualisieren Sie die Methodendefinition, sodass sie dem folgenden Beispiel entspricht:

private void customersDataGridView_DoubleClick(object sender, EventArgs e)
{
    System.Data.DataRowView SelectedRowView;
    NorthwindDataSet.CustomersRow SelectedRow;

    SelectedRowView = (System.Data.DataRowView)customersBindingSource.Current;
    SelectedRow = (NorthwindDataSet.CustomersRow)SelectedRowView.Row;

    Form2 OrdersForm = new Form2();
    OrdersForm.LoadOrders(SelectedRow.CustomerID);
    OrdersForm.Show();
}

Ausführen der App

  • Drücken Sie F5, um die Anwendung auszuführen.

  • Doppelklicken Sie einen Kundendatensatz in Form1, sodass dieser in Form2 mit den Bestellungen dieses Kunden geöffnet wird.

Nächste Schritte

Entsprechend den Anforderungen an Ihre Anwendung können Sie nach dem Übergeben der Daten zwischen den Formularen noch weitere Schritte ausführen. Einige Verbesserungen, die Sie an diesem Tutorial vornehmen können, sind: