Передача данных между формами

Примечание.

Наборы данных и связанные классы являются устаревшими технологиями платформа .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти во время отключения приложений от базы данных. Они особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешными, мы рекомендуем новым приложениям .NET использовать Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей, и он имеет более простой интерфейс программирования.

В этом руководстве приведены пошаговые инструкции по передаче данных из одной формы в другую. Используя таблицы клиентов и заказов из Northwind, одна форма позволяет пользователям выбирать клиента, а вторая форма отображает выбранные заказы клиента. В этом руководстве показано, как создать метод во второй форме, которая получает данные из первой формы.

Примечание.

В этом руководстве демонстрируется только один способ передачи данных между формами. Существуют другие варианты передачи данных в форму, включая создание второго конструктора для получения данных или создание общедоступного свойства, которое можно задать с данными из первой формы.

Задачи, иллюстрированные в этом руководстве, включают:

  • Создание проекта приложения Windows Forms (платформа .NET Framework).

  • Создание и настройка набора данных с помощью мастера настройки источника данных.

  • Выбор элемента управления, создаваемого на форме при перетаскивании элементов из окна Источники данных. Дополнительные сведения см. в разделе "Настройка элемента управления для создания при перетаскивании из окна источников данных".

  • Создание элемента управления с привязкой к данным с помощью перетаскивания элементов из окна Источники данных на форму.

  • Создание второй формы с сеткой для отображения данных.

  • Создание запроса адаптера таблицы для получения заказов определенного клиента.

  • Передача данных между формами.

Необходимые компоненты

Чтобы завершить работу с этим руководством, вам потребуется разработка классических приложений .NET и рабочие нагрузки хранения и обработки данных, установленные в Visual Studio. Чтобы установить их, откройте Visual Studio Installer и нажмите кнопку "Изменить" (или "Изменить>") рядом с версией Visual Studio, которую вы хотите изменить. См. раздел Изменение Visual Studio.

В этом руководстве используется SQL Server Express LocalDB и пример базы данных Northwind.

  1. Если у вас нет SQL Server Express LocalDB, установите его на странице скачивания SQL Server Express или с помощью Установщика Visual Studio. В установщике Visual Studio SQL Server Express LocalDB можно установить как часть рабочей нагрузки хранилища данных и обработки или как отдельный компонент.

  2. Установите пример базы данных Northwind, выполнив следующие действия.

    1. В Visual Studio откройте окно обозреватель объектов SQL Server. (SQL Server обозреватель объектов устанавливается как часть рабочей нагрузки хранилища данных и обработки в Visual Studio Installer.) Разверните узел SQL Server. Щелкните правой кнопкой мыши экземпляр LocalDB и выберите новый запрос.

      Откроется окно редактора запросов.

    2. Скопируйте скрипт Northwind Transact-SQL в буфер обмена. Этот скрипт T-SQL создает базу данных Northwind с нуля и заполняет ее данными.

    3. Вставьте скрипт T-SQL в редактор запросов и нажмите кнопку "Выполнить ".

      Через некоторое время запрос завершает работу и создается база данных Northwind.

Создание проекта приложения Windows Forms

  1. В Visual Studio в меню Файл выберите пункты Создать>Проект.

  2. Разверните Visual C# или Visual Basic в левой области, а затем выберите "Рабочий стол Windows".

  3. В средней области выберите тип проекта приложения Windows Forms.

  4. Назовите проект PassingDataBetweenForms и нажмите кнопку "ОК".

    Создается проект PassingDataBetweenForms, который добавляется в Обозреватель решений.

Создание источника данных

  1. Чтобы открыть окно "Источники данных" , в меню "Данные " щелкните " Показать источники данных".

  2. В окне Источники данных выберите Добавить новый источник данных, чтобы запустить Мастер настройки источника данных.

  3. На странице Выбор типа источника данных выберите элемент База данных и нажмите Далее.

  4. На странице Выбор модели базы данных выберите Набор данных и нажмите кнопку Далее.

  5. На странице Выбор подключения к базе данных выполните одно из следующих действий:

    • Если подключение к образцу базы данных Northwind доступно в раскрывающемся списке, выберите его.

    • Выберите Новое подключение для открытия диалогового окна Добавить/изменить подключение.

  6. Если базе данных требуется пароль и выбран параметр для включения конфиденциальных данных, выберите параметр и нажмите кнопку Далее.

  7. На странице "Сохранить строка подключения в файл конфигурации приложения" нажмите кнопку "Далее".

  8. Разверните узел Таблицы на странице Выбор объектов базы данных.

  9. Выберите таблицы Customers и Orders и нажмите кнопку Готово.

    NorthwindDataSet добавляется в проект, и таблицы Customers и Orders отображаются в окне Источники данных.

Создание первой формы (Form1)

Вы можете создать сетку с привязкой к данным (элемент управления DataGridView) с помощью перетаскивания узла Customers из окна Источники данных на форму.

Создание сетки с привязкой к данным на форме

  • Перетащите главный узел Customers из окна Источники данных на форму Form1.

    На форме Form1 появляется DataGridView и панель инструментов (BindingNavigator) для перемещения по записям. В области компонентов появляется NorthwindDataSet, CustomersTableAdapter, BindingSource и BindingNavigator.

Создание второй формы

Создайте вторую форму для передачи данных.

  1. В меню Проект выберите пункт Добавить форму Windows.

  2. Оставьте имя по умолчанию Form2 и нажмите кнопку Добавить.

  3. Перетащите главный узел Orders из окна Источники данных на форму Form2.

    На форме Form2 появляется DataGridView и панель инструментов (BindingNavigator) для перемещения по записям. В области компонентов появляется NorthwindDataSet, CustomersTableAdapter, BindingSource и BindingNavigator.

  4. Удалите OrdersBindingNavigator из области компонентов.

    OrdersBindingNavigator исчезает из Form2.

Добавление запроса TableAdapter

Добавьте запрос TableAdapter в Form2, чтобы загрузить заказы для выбранного клиента в Form1.

  1. Дважды щелкните файл NorthwindDataSet.xsd в обозревателе решений.

  2. Щелкните правой кнопкой мыши элемент OrdersTableAdapter и выберите пункт Добавить запрос.

  3. Оставьте параметр по умолчанию Использовать инструкции SQL и нажмите кнопку Далее.

  4. Оставьте параметр по умолчанию Инструкция SELECT, возвращающая строки и нажмите кнопку Далее.

  5. WHERE Добавьте предложение в запрос, чтобы вернуться Orders на CustomerIDоснове . Запрос должен выглядеть примерно следующим образом:

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

    Примечание.

    Проверьте правильность синтаксиса параметров для своей базы данных. Например, в Microsoft Access WHERE предложение будет выглядеть следующим образом: WHERE CustomerID = ?

  6. Нажмите кнопку Далее.

  7. В поле "Заполнить имя DataTableMethod" введите FillByCustomerID.

  8. Снимите флажок Вернуть таблицу данных (DataTable) и нажмите кнопку Далее.

  9. Нажмите кнопку Готово.

Создание метода в Form2 для передачи данных в

  1. Щелкните правой кнопкой мыши Form2 и выберите пункт Просмотреть код, чтобы открыть Form2 в редакторе кода.

  2. Добавьте следующий код в Form2 после метода Form2_Load:

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

Создание метода в Form1 для передачи данных и отображения Form2

  1. В Form1 щелкните правой кнопкой мыши сетку данных клиентов и выберите пункт Свойства.

  2. В окне Свойства выберите События.

  3. Дважды щелкните событие CellDoubleClick.

    Откроется окно редактора кода.

  4. Обновите определение метода в соответствии со следующим примером:

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

Выполнить приложение

  • Нажмите клавишу F5 для запуска приложения.

  • Дважды щелкните запись клиента в форме Form1, чтобы открыть Form2 с заказами этого клиента.

Следующие шаги

В зависимости от требований приложения может потребоваться выполнить несколько шагов после передачи данных между формами. Некоторые улучшения, которые можно сделать в этом руководстве, включают: