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


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

 

Опубликовано: Апрель 2016

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

Примечание

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

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

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

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

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

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

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

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

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

    Создается проект 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:

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

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

Порядок создания метода, предназначенного для передачи данных в 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();
            }
    
        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
    

Запуск приложения

Запуск приложения

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

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

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

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

См. также

Пошаговые руководства работы с данными
Привязка элементов управления Windows Forms к данным в Visual Studio
Общие сведения об источниках данных
Общие сведения об адаптере таблиц
Подключение к данным в Visual Studio
Подготовка приложения к получению данных
Выборка данных в приложение
Привязка элементов управления к данным в Visual Studio
Редактирование данных в приложении
Проверка данных
Сохранение данных