Skicka data mellan formulär

Anmärkning

Klassen DataSet och relaterade klasser är äldre .NET Framework-tekniker från början av 2000-talet som gör det möjligt för program att arbeta med data i minnet medan apparna kopplas från databasen. Teknikerna är särskilt användbara för appar som gör det möjligt för användare att ändra data och spara ändringarna tillbaka till databasen. Även om datauppsättningar är en bevisad framgångsrik teknik är den rekommenderade metoden för nya .NET-program att använda Entity Framework Core. Entity Framework är ett mer naturligt sätt att arbeta med tabelldata som objektmodeller och har ett enklare programmeringsgränssnitt.

Den här handledningen innehåller stegvisa instruktioner för hur man överför data från ett formulär till ett annat. Genom att använda tabellerna Kunder och Beställningar från Northwind-exempeldatabasen kan användarna välja en kund i ett formulär, och ett andra formulär visar den valda kundens beställningar. Den här självstudien visar hur du skapar en metod i det andra formuläret som tar emot data från det första formuläret.

I den här självstudien utför du följande uppgifter:

  • Skapa ett nytt Windows Forms App-projekt (.NET Framework).
  • Skapa och konfigurera en datauppsättning med hjälp av konfigurationsguiden för datakälla.
  • Välj den kontroll som ska skapas i formuläret när du drar objekt från fönstret Datakällor . Mer information finns i Ange vilken kontroll som ska skapas när du drar från fönstret Datakällor.
  • Skapa en databunden kontroll genom att dra objekt från fönstret Datakällor till ett formulär.
  • Skapa ett andra formulär med ett rutnät som visar data.
  • Skapa en TableAdapter fråga för att hämta beställningar för en specifik kund.
  • Skicka data mellan formulär.

Anmärkning

Den här handledningen visar ett sätt att skicka data mellan formulär. Det finns andra alternativ för att skicka data till ett formulär, till exempel att skapa en andra konstruktor för att ta emot data eller skapa en offentlig egenskap som kan anges med data från det första formuläret.

Förutsättningar

  • .NET Desktop-utvecklings- och datalagrings- och bearbetningsarbetsbelastningar installerade i Visual Studio. Om du vill installera dem öppnar du Visual Studio Installer och väljer Ändra, eller Fler>ändringar, bredvid den version av Visual Studio som du vill använda. Mer information finns i Ändra Visual Studio.

  • SQL Server Express 2019 LocalDB som installerats antingen från sidan för SQL Server-nedladdningar eller via Visual Studio Installer som en del av arbetsbelastningen datalagring och bearbetning .

  • Northwind-exempeldatabasen som skapas genom att följa dessa steg:

    1. Öppna fönstret SQL Server Object Explorer i Visual Studio genom att välja det på menyn Visa . SQL Server Object Explorer installeras som en del av arbetsbelastningen Datalagring och bearbetning .

    2. Expandera SQL Server-noden , högerklicka på din LocalDB-instans och välj Ny fråga för att öppna ett frågeredigerarefönster.

    3. Kopiera Northwind-Transact-SQL-skriptet till urklipp. Det här T-SQL-skriptet skapar Northwind-databasen och fyller den med data.

    4. Klistra in T-SQL-skriptet i frågeredigeraren och välj sedan Kör överst i fönstret för att skapa Northwind-databasen.

Skapa Windows Forms-appprojektet

  1. I Visual Studio går du till arkivmenyn och väljer Nytt>projekt.

  2. Välj antingen C# eller Visual Basic i listrutan Alla språk , Windows i listrutan Alla plattformar och Desktop från listan Alla projekttyper .

  3. Välj Windows Forms App (.NET Framework) i listan med projektmallar och välj sedan Nästa.

  4. Ge projektet namnet PassingDataBetweenForms, välj Nästa och välj sedan Skapa.

Projektet PassingDataBetweenForms skapas och läggs till i Solution Explorer. Designervyn för Form1 visas i redigeraren.

Skapa datakällan

  1. Öppna fönstret Datakällor genom att välja Project> till ny datakälla) på Visual Studio-menyn.

  2. I fönstret Datakällor väljer du Lägg till ny datakälla för att starta konfigurationsguiden för datakälla .

  3. På sidan Välj datakällatyp väljer du Databas och sedan Nästa.

  4. På sidan Välj en databasmodell kontrollerar du att Datauppsättning har angetts och väljer Nästa.

  5. På sidan Välj dataanslutning , om en dataanslutning till Northwind-exempeldatabasen redan är tillgänglig, väljer du den och fortsätter till steget Välj databasobjekt . Annars väljer du Ny anslutning.

  6. På skärmen Välj datakälla väljer du Microsoft SQL Server Database File och sedan Fortsätt.

  7. På skärmen Lägg till anslutning väljer du Bläddra, bläddrar till och väljer filen northwnd.mdf och väljer Öppna.

  8. Välj Antingen Windows-autentisering eller SQL Server-autentisering och ange ett användarnamn och lösenord för att komma åt databasen.

  9. Välj Testa anslutning för att testa anslutningen. När anslutningen lyckas väljer du OK.

  10. På sidan Välj dataanslutning bekräftar du att databasfilen visas och väljer Nästa.

  11. Välj Nej till popup-frågan Vill du kopiera filen till projektet och ändra anslutningen?

  12. På sidan Spara anslutningssträngen till programkonfigurationsfilen väljer du Ja. Ge anslutningen namnet NorthwindConnectionString och välj sedan Nästa.

  13. På sidan Välj databasobjekt expanderar du noden Tabeller , väljer tabellerna Kunder och Beställningar , namnger datauppsättningen NorthwindDataSet och väljer sedan Slutför.

NorthwindDataSet läggs till i projektet och tabellerna Kunder och Beställningar visas i fönstret Datakällor.

Fyll i det första formuläret

Skapa det andra formuläret

Skapa ett andra formulär att skicka data till.

  1. Välj Lägg till formulär (Windows-formulär)Projekt-menyn.

  2. Lämna standardnamnet Formulär2 och välj Lägg till.

  3. Dra huvudnoden Beställningar från fönstret Datakällor till Formulär2.

    En DataGridView och en BindingNavigator verktygsremsa för navigering av poster visas på Formulär2. En NorthwindDataSet, CustomersTableAdapter, BindingSourceoch BindingNavigator visas i komponentfältet.

  4. Ta bort OrdersBindingNavigator från komponentfältet. BindingNavigator försvinner från form2.

Lägga till en TableAdapter-fråga

Lägg till en TableAdapter fråga i Form2 som läser in beställningar för den kund som valts i Formulär1.

  1. Dubbelklicka på filen NorthwindDataSet.xsd i Solution Explorer.

  2. Högerklicka på OrdersTableAdapter i tabellen Beställningar och välj Lägg till>fråga.

  3. Lämna standardalternativet Använd SQL-instruktioner och välj Nästa.

  4. Lämna standardalternativet SELECT som returnerar rader och välj Nästa.

  5. I Vilka data ska tabellen läsas in för att returnera Orders baserat på CustomerIDlägger du till en WHERE -sats i slutet av frågan. Den sista frågan bör se ut ungefär så här:

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

    Anmärkning

    Använd rätt parametersyntax för databasen. I Microsoft Access WHERE skulle satsen till exempel se ut som WHERE CustomerID = ?.

  6. Välj Nästa.

  7. På skärmen Välj metoder att generera väljer du Fyll i en datatabell och anger FillByCustomerID.

  8. Avmarkera alternativet Return a DataTable (Returnera en datatabell ) och välj sedan Slutför.

Skapa en metod i Form2 för att skicka data till

  1. Högerklicka i Formulär2 och välj Visa kod för att öppna Form2-koden i redigeraren.

  2. I Form2-koden tar du bort innehållet i Form2_Load metoden och lägger till följande kod efter Form2_Load metoden:

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

Skapa en metod i Form1 för att skicka data och visa Formulär2

  1. I designervyn i Form1 högerklickar du på rutnätet Kunddata och väljer sedan Egenskaper.

  2. I fönstret Egenskaper väljer du ikonen Händelser i det övre verktygsfältet.

  3. Dubbelklicka på DoubleClick-händelsen för att öppna kodredigeraren.

  4. I kodredigeraren uppdaterar du metoddefinitionen så att den matchar följande exempel:

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();
}

Köra och testa appen

  1. Tryck på F5 för att köra programmet.

  2. Dubbelklicka på en kundpost i Formulär1 i programmet för att öppna Formulär2 med kundens beställningar.

Nästa steg

Beroende på dina programkrav kan du utföra flera steg när du har överfört data mellan formulär. Några förbättringar du kan göra i den här självstudien är: