Поделиться через


Пошаговое руководство. Передача данных между формами Windows Forms

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

Примечание

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

В данном пошаговом руководстве представлены следующие задачи.

Обязательные компоненты

Для выполнения данного пошагового руководства требуется:

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

Порядок создания нового проекта Windows

  1. Перейдите в меню Файл и создайте новый проект.

  2. Присвойте проекту имя PassingDataBetweenForms.

  3. Выберите Приложение Windows Forms и нажмите кнопку ОК. Для получения дополнительной информации см. Разработка клиентских приложений с использованием .NET Framework.

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

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

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

  1. В меню Данные выберите команду Показать источники данных.

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

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

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

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

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

      -или-

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

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

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

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

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

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

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

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

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

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

Порядок создания второй формы, предназначенной для передачи данных

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

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

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

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

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

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

Добавление запроса адаптера таблицы на форму 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. Для параметра Имя метода Заполнить таблицу данных (DataTable) введите FillByCustomerID.

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

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

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

Порядок создания метода, предназначенного для передачи данных

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

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

    Friend Sub LoadOrders(ByVal CustomerID As String)
        OrdersTableAdapter.FillByCustomerID(NorthwindDataSet.Orders, CustomerID)
    End Sub
    
    internal void LoadOrders(String CustomerID)
    {
        ordersTableAdapter.FillByCustomerID(northwindDataSet.Orders, CustomerID);
    }
    

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

Порядок создания метода, предназначенного для передачи данных в Form2

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

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

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

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

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

    Private Sub CustomersDataGridView_DoubleClick() Handles CustomersDataGridView.DoubleClick
    
        Dim SelectedRowView As Data.DataRowView
        Dim SelectedRow As NorthwindDataSet.CustomersRow
    
        SelectedRowView = CType(CustomersBindingSource.Current, System.Data.DataRowView)
        SelectedRow = CType(SelectedRowView.Row, NorthwindDataSet.CustomersRow)
    
        Dim OrdersForm As New Form2
        OrdersForm.LoadOrders(SelectedRow.CustomerID)
        OrdersForm.Show()
    End Sub
    
    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 с заказами этого клиента.

Следующие действия

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

См. также

Основные понятия

Привязка элементов управления Windows Forms к данным в Visual Studio

Общие сведения об источниках данных

Общие сведения об адаптере таблиц

Подготовка приложения к получению данных

Выборка данных в приложение

Привязка элементов управления к данным в Visual Studio

Редактирование данных в приложении

Проверка данных

Сохранение данных

Другие ресурсы

Пошаговые руководства работы с данными

Подключение к данным в Visual Studio