Udostępnij przez


Przekazywanie danych między formularzami

Uwaga / Notatka

Klasy DataSet i powiązane klasy to starsze technologie .NET Framework z początku 2000 roku, które umożliwiają aplikacjom pracę z danymi w pamięci, gdy aplikacje są odłączone od bazy danych. Technologie te są szczególnie przydatne w przypadku aplikacji, które umożliwiają użytkownikom modyfikowanie danych i utrwalanie zmian w bazie danych. Mimo że zestawy danych są sprawdzoną pomyślną technologią, zalecaną metodą dla nowych aplikacji platformy .NET jest użycie platformy Entity Framework Core. Program Entity Framework zapewnia bardziej naturalny sposób pracy z danymi tabelarycznymi jako modelami obiektów i ma bardziej prosty interfejs programowania.

Ten samouczek zawiera instrukcje krok po kroku dotyczące przekazywania danych z jednego formularza do innego. Korzystając z tabel Customers and Orders z przykładowej bazy danych Northwind, jeden formularz umożliwia użytkownikom wybranie klienta, a drugi formularz wyświetla zamówienia wybranego klienta. W tym samouczku pokazano, jak utworzyć metodę w drugim formularzu, który odbiera dane z pierwszego formularza.

W tym samouczku wykonasz następujące zadania:

  • Utwórz nowy projekt aplikacji Windows Forms (.NET Framework).
  • Tworzenie i konfigurowanie zestawu danych przy użyciu Kreatora konfiguracji źródła danych.
  • Wybierz kontrolkę, która ma zostać utworzona w formularzu podczas przeciągania elementów z okna Źródła danych . Więcej informacji znajdziesz w Ustawianie kontrolki do utworzenia podczas przeciągania z okna Źródła danych.
  • Utwórz kontrolkę powiązaną z danymi, przeciągając elementy z okna Źródła danych na formularz.
  • Utwórz drugi formularz z siatką, która wyświetla dane.
  • Utwórz TableAdapter zapytanie w celu pobrania zamówień dla określonego klienta.
  • Przekazywanie danych między formularzami.

Uwaga / Notatka

W tym samouczku przedstawiono tylko jeden sposób przekazywania danych między formularzami. Istnieją inne opcje przekazywania danych do formularza, takie jak tworzenie drugiego konstruktora do odbierania danych lub tworzenie właściwości publicznej, którą można ustawić przy użyciu danych z pierwszego formularza.

Wymagania wstępne

  • Obciążenia tworzenia aplikacji desktopowych na platformie .NET oraz przechowywania i przetwarzania danych zainstalowane w programie Visual Studio. Aby je zainstalować, otwórz Instalatora programu Visual Studio i wybierz pozycję Modyfikuj lub Więcej>modyfikacji obok wersji programu Visual Studio, której chcesz użyć. Aby uzyskać więcej informacji, zobacz Modyfikowanie programu Visual Studio.

  • Baza danych LocalDB programu SQL Server Express 2019 zainstalowana na stronie pobierania programu SQL Server lub za pośrednictwem Instalatora programu Visual Studio w ramach obciążenia magazynu i przetwarzania danych .

  • Przykładowa baza danych Northwind utworzona przez następujące kroki:

    1. W programie Visual Studio otwórz okno Eksplorator obiektów programu SQL Server , wybierając je z menu Widok . Eksplorator obiektów programu SQL Server jest instalowany w ramach pakietu Magazyn danych i przetwarzanie.

    2. Rozwiń węzeł SQL Server, kliknij prawym przyciskiem myszy instancję LocalDB i wybierz pozycję Nowe zapytanie, aby otworzyć okno edytora zapytań.

    3. Skopiuj skrypt Northwind Transact-SQL do schowka. Ten skrypt języka T-SQL tworzy bazę danych Northwind i wypełnia ją danymi.

    4. Wklej skrypt języka T-SQL do edytora zapytań, a następnie wybierz pozycję Wykonaj w górnej części okna, aby utworzyć bazę danych Northwind.

Tworzenie projektu aplikacji Windows Forms

  1. W programie Visual Studio w menu Plik wybierz pozycję Nowy>projekt.

  2. Wybierz pozycję C# lub Visual Basic z listy rozwijanej Wszystkie języki , Windows z listy rozwijanej Wszystkie platformy i Pulpit z listy Wszystkie typy projektów .

  3. Wybierz pozycję Windows Forms App (.NET Framework) z listy szablonów projektów, a następnie wybierz pozycję Dalej.

  4. Nadaj projektowi nazwę PassingDataBetweenForms, wybierz pozycję Dalej, a następnie wybierz pozycję Utwórz.

Projekt PassingDataBetweenForms jest tworzony i dodawany do Eksploratora rozwiązań. Widok projektanta formularza Form1 jest wyświetlany w edytorze.

Tworzenie źródła danych

  1. Otwórz okno Źródła danych, wybierając pozycję ProjectAdd New Data Source (Dodaj nowe źródło danych> w menu programu Visual Studio.

  2. W oknie Źródła danych wybierz pozycję Dodaj nowe źródło danych , aby uruchomić kreatora konfiguracji źródła danych .

  3. Na stronie Wybierz typ źródła danych wybierz pozycję Baza danych, a następnie wybierz pozycję Dalej.

  4. Na stronie Wybieranie modelu bazy danych sprawdź, czy zestaw danych został określony, a następnie wybierz pozycję Dalej.

  5. Na stronie Wybieranie połączenia danych , jeśli połączenie danych z przykładową bazą danych Northwind jest już dostępne, wybierz je i przejdź do kroku Wybierz obiekty bazy danych . W przeciwnym razie wybierz pozycję Nowe połączenie.

  6. Na ekranie Wybieranie źródła danych wybierz pozycję Plik bazy danych programu Microsoft SQL Server, a następnie wybierz pozycję Kontynuuj.

  7. Na ekranie Dodawanie połączenia wybierz pozycję Przeglądaj, przejdź do i wybierz plik northwnd.mdf , a następnie wybierz pozycję Otwórz.

  8. Wybierz pozycję Uwierzytelnianie systemu Windows lub wybierz pozycję Uwierzytelnianie programu SQL Server i podaj nazwę użytkownika i hasło, aby uzyskać dostęp do bazy danych.

  9. Wybierz pozycję Testuj połączenie , aby przetestować połączenie. Po pomyślnym nawiązaniu połączenia wybierz przycisk OK.

  10. Na stronie Wybieranie połączenia danych upewnij się, że zostanie wyświetlony plik bazy danych i wybierz przycisk Dalej.

  11. Wybierz pozycję Nie w wyskakującym pytaniu Czy chcesz skopiować plik do projektu i zmodyfikować połączenie?

  12. Na stronie Zapisz parametry połączenia w pliku konfiguracji aplikacji wybierz pozycję Tak. Nadaj połączeniu nazwę NorthwindConnectionString, a następnie wybierz pozycję Dalej.

  13. Na stronie Wybieranie obiektów bazy danych rozwiń węzeł Tabele, wybierz tabeleKlienci i Zamówienia , nadaj zestawowi danych nazwę NorthwindDataSet, a następnie wybierz pozycję Zakończ.

Zestaw NorthwindDataSet został dodany do projektu, a tabele Customers (Klienci) i Orders (Zamówienia) są wyświetlane w oknie Źródła danych.

Wypełnianie pierwszego formularza

Tworzenie drugiego formularza

Utwórz drugi formularz do przekazania danych.

  1. Z menu Project (Projekt) wybierz pozycję Add Form (Windows Forms)( Dodaj formularz (Formularze systemu Windows).

  2. Pozostaw domyślną nazwę formularza Form2 i wybierz pozycję Dodaj.

  3. Przeciągnij węzeł Główne zamówienia z okna Źródła danych do formularza Form2.

    Pasek DataGridView i narzędzie BindingNavigator do nawigowania po rekordach są wyświetlane na Formularzu Form2. Elementy NorthwindDataSet, CustomersTableAdapter, BindingSource i BindingNavigator pojawią się na pasku składników.

  4. Usuń moduł OrdersBindingNavigator z zasobnika składnika. Element BindingNavigator znika z formularza Form2.

Dodawanie zapytania TableAdapter

TableAdapter Dodaj zapytanie do formularza Form2, które ładuje zamówienia dla klienta wybranego w formularzu Form1.

  1. Kliknij dwukrotnie plik NorthwindDataSet.xsd w Eksploratorze rozwiązań.

  2. Kliknij prawym przyciskiem myszy pozycję OrdersTableAdapter w tabeli Orders (Zamówienia ), a następnie wybierz polecenie Dodaj>zapytanie.

  3. Pozostaw domyślną opcję Użyj instrukcji SQL i wybierz pozycję Dalej.

  4. Pozostaw domyślną opcję SELECT, która zwraca wiersze , a następnie wybierz pozycję Dalej.

  5. W Jakie dane powinna załadować tabela, aby zwrócić Orders na podstawie CustomerID, dodaj klauzulę WHERE na końcu zapytania. Ostatnie zapytanie powinno wyglądać podobnie do następującego kodu:

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

    Uwaga / Notatka

    Użyj poprawnej składni parametru dla bazy danych. Na przykład w programie Microsoft Access klauzula WHERE będzie wyglądać następująco WHERE CustomerID = ?: .

  6. Wybierz pozycję Dalej.

  7. Na ekranie Wybieranie metod do wygenerowania wybierz pozycję Wypełnij tabelę danych i wprowadź FillByCustomerID.

  8. Usuń zaznaczenie opcji Return a DataTable (Zwracanie tabeli danych), a następnie wybierz pozycję Finish (Zakończ).

Stwórz metodę w formularzu Form2, aby przekazać dane do

  1. Kliknij prawym przyciskiem myszy formularz Form2 i wybierz polecenie Wyświetl kod , aby otworzyć kod Form2 w edytorze.

  2. W kodzie Form2 usuń zawartość Form2_Load metody i dodaj następujący kod po metodzie Form2_Load :

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

Tworzenie metody w formularzu Form1 w celu przekazywania danych i wyświetlania formularza Form2

  1. W widoku Projektant formularza Form1 kliknij prawym przyciskiem myszy siatkę danych klienta, a następnie wybierz pozycję Właściwości.

  2. W oknie Właściwości wybierz ikonę Zdarzenia na górnym pasku narzędzi.

  3. Kliknij dwukrotnie zdarzenie DoubleClick , aby otworzyć edytor kodu.

  4. W edytorze kodu zaktualizuj definicję metody, aby odpowiadała następującemu przykładowi:

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

Uruchamianie i testowanie aplikacji

  1. Naciśnij F5 , aby uruchomić aplikację.

  2. W aplikacji kliknij dwukrotnie rekord klienta w formularzu Form1 , aby otworzyć formularz Form2 z zamówieniami tego klienta.

Dalsze kroki

W zależności od wymagań aplikacji można wykonać kilka kroków po przekazaniu danych między formularzami. Niektóre ulepszenia, które można wprowadzić w tym samouczku, obejmują: