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


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

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

Примечание

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

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

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

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

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

Чтобы создать новый проект Windows

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

  2. Назовите проект PassingDataBetweenForms.

  3. Выберите Приложение Windows и щелкните OK. Дополнительные сведения см. в разделе Создание приложения для Windows.

    Проект PassingDataBetweenForms будет создан и добавлен в Обозреватель решений.

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

Для создания источника данных

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

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

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

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

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

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

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

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

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

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

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

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

Чтобы создать на форме сетку с привязкой к данных

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

Чтобы создать вторую форму для передачи ей данных

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

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

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

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

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

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

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

Чтобы создать запрос объекта TableAdapter

  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

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

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

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

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

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

Журнал изменений

Дата

Журнал

Причина

Март 2011

Устранены ошибки в примере кода.

Обратная связь от клиента.