Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Классы DataSet и связанные классы являются устаревшими технологиями .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти, пока приложения отключены от базы данных. Технологии особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных являются проверенными успешными технологиями, рекомендуемый подход для новых приложений .NET заключается в использовании Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей и имеет более простой интерфейс программирования.
В этом руководстве приведены пошаговые инструкции по передаче данных из одной формы в другую. Используя таблицы "Клиенты и заказы" из образца базы данных Northwind, одна форма позволяет пользователям выбирать клиента, а вторая форма отображает выбранные заказы клиента. В этом руководстве показано, как создать метод во второй форме, которая получает данные из первой формы.
В этом руководстве вы выполните следующие задачи:
- Создайте новый проект приложения Windows Forms (.NET Framework).
- Создайте и настройте набор данных с помощью мастера настройки источника данных.
- Выберите элемент управления, который нужно создать в форме при перетаскивании элементов из окна источников данных . Дополнительные сведения см. в разделе "Настройка элемента управления для создания при перетаскивании из окна источников данных".
- Создайте элемент управления с привязкой к данным, перетащив элементы из окна источников данных в форму.
- Создайте вторую форму с сеткой, отображающей данные.
-
TableAdapterСоздайте запрос для получения заказов для конкретного клиента. - Передача данных между формами.
Замечание
В этом руководстве демонстрируется только один способ передачи данных между формами. Существуют другие варианты передачи данных в форму, например создание второго конструктора для получения данных или создание общедоступного свойства, которое можно задать с данными из первой формы.
Предпосылки
Установленные в Visual Studio рабочие нагрузки для разработки настольных приложений .NET и хранения и обработки данных. Чтобы установить их, откройте Visual Studio Installer и выберите "Изменить" или " Дополнительно>изменить" рядом с версией Visual Studio, которую вы хотите использовать. Дополнительные сведения см. в разделе "Изменение Visual Studio".
SQL Server Express 2019 LocalDB, установленный либо с страницы загрузок SQL Server, либо через установщик Visual Studio в составе рабочей нагрузки хранилище и обработка данных.
Пример базы данных Northwind, созданный следующими шагами:
В Visual Studio откройте окно обозревателя объектов SQL Server , выбрав его в меню "Вид ". Обозреватель объектов SQL Server устанавливается как часть рабочей нагрузки хранилища данных и обработки .
Разверните узел SQL Server, щелкните правой кнопкой мыши экземпляр LocalDB и выберите Новый запрос, чтобы открыть окно редактора запросов.
Скопируйте скрипт Northwind Transact-SQL в буфер обмена. Этот скрипт T-SQL создает базу данных Northwind и заполняет ее данными.
Вставьте скрипт T-SQL в редактор запросов и нажмите кнопку "Выполнить " в верхней части окна, чтобы создать базу данных Northwind.
Создание проекта приложения Windows Forms
В Visual Studio в меню "Файл " выберите "Создать>проект".
Выберите C# или Visual Basic из раскрывающегося списка " Все языки ", Windows из раскрывающегося списка " Все платформы " и "Рабочий стол " из списка "Все типы проектов ".
Выберите приложение Windows Forms (.NET Framework) из списка шаблонов проектов и нажмите кнопку "Далее".
Назовите проект PassingDataBetweenForms, нажмите кнопку "Далее", а затем нажмите кнопку "Создать".
Проект PassingDataBetweenForms создается и добавляется в обозреватель решений. Представление конструктора Form1 отображается в редакторе.
Создание источника данных
Откройте окно "Источники данных", выбрав "Проект>Добавить новый источник данных" в меню Visual Studio.
В окне "Источники данных" выберите "Добавить новый источник данных ", чтобы запустить мастер настройки источника данных .
На странице "Выбор типа источника данных " выберите "База данных" и нажмите кнопку "Далее".
На странице "Выбор модели базы данных " убедитесь, что указан набор данных и нажмите кнопку "Далее".
На странице Выбор подключения к данным, если подключение к образцу базы данных Northwind уже доступно, выберите его и перейдите к шагу Выбор объектов базы данных. В противном случае нажмите кнопку "Создать подключение".
На экране выбора источника данных выберите файл базы данных Microsoft SQL Server и нажмите кнопку "Продолжить".
На экране "Добавить подключение" выберите "Обзор", перейдите к файлу northwnd.mdf и нажмите кнопку "Открыть".
Выберите проверку подлинности Windows или выберите проверку подлинности SQL Server и укажите имя пользователя и пароль для доступа к базе данных.
Выберите "Проверить подключение", чтобы проверить подключение. После успешного завершения подключения нажмите кнопку "ОК".
На странице выбора подключения к данным убедитесь, что файл базы данных появится и нажмите кнопку "Далее".
Выберите Нет в ответ на вопрос Хотите ли вы скопировать файл в свой проект и изменить подключение?
На странице "Сохранить строку подключения" на странице файла конфигурации приложения нажмите кнопку "Да". Присвойте подключению NorthwindConnectionString и нажмите кнопку "Далее".
На странице "Выбор объектов базы данных " разверните узел "Таблицы ", выберите таблицы "Клиенты и заказы ", присвойте набору данных NorthwindDataSet и нажмите кнопку "Готово".
NorthwindDataSet добавляется в проект, а таблицы "Клиенты и заказы" отображаются в окне "Источники данных".
Заполнение первой формы
Чтобы создать сетку с привязкой к данным, перетащите узел Customers из окна источников данных в Form1.
На форме DataGridView отображаются элемент управления BindingNavigator и панель инструментов для навигации по записям. Объект NorthwindDataSet,
CustomersTableAdapter, BindingSource, и BindingNavigator отображаются в области компонентов.
Создание второй формы
Создайте вторую форму для передачи данных.
В меню "Проект" выберите "Добавить форму" (Windows Forms).
Оставьте имя формы 2 по умолчанию и нажмите кнопку "Добавить".
Перетащите основной узел Orders из окна источников данных в Form2.
На DataGridView отображаются BindingNavigator и полоса инструментов для навигации по записям. Объект NorthwindDataSet,
CustomersTableAdapter, BindingSource, и BindingNavigator отображаются в области компонентов.Удалите OrdersBindingNavigator из области компонентов. BindingNavigator исчезает из Формы 2.
Добавьте запрос TableAdapter
TableAdapter Добавьте запрос в Form2, который загружает заказы для клиента, выбранного в Form1.
Дважды щелкните файл NorthwindDataSet.xsd в обозревателе решений.
Щелкните правой кнопкой мыши OrdersTableAdapter в таблице "Заказы " и выберите "Добавить>запрос".
Оставьте параметр по умолчанию Использовать SQL инструкции и нажмите Далее.
Оставьте параметр по умолчанию SELECT, который возвращает строки и нажмите кнопку "Далее".
В какие данные должна загружать таблица, для возврата
Orders, основываясь наCustomerID, добавьте условиеWHEREв конец запроса. Окончательный запрос должен выглядеть примерно так, как показано в следующем коде:SELECT OrderID, CustomerID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry FROM Orders WHERE CustomerID = @CustomerIDЗамечание
Используйте правильный синтаксис параметров для базы данных. Например, в Microsoft Access предложение
WHEREбудет выглядеть следующим образомWHERE CustomerID = ?.Нажмите кнопку "Далее".
На экране Выбор методов для создания выберите Заполнить DataTable и введите FillByCustomerID.
Отмените выбор параметра Return a DataTable и нажмите кнопку "Готово".
Создайте метод в Form2 для передачи данных
Щелкните правой кнопкой мыши в Form2 и выберите "Вид кода" , чтобы открыть код Form2 в редакторе.
В коде Form2 удалите содержимое
Form2_Loadметода и добавьте следующий код послеForm2_Loadметода:
internal void LoadOrders(String CustomerID)
{
ordersTableAdapter.FillByCustomerID(northwindDataSet.Orders, CustomerID);
}
Создание метода в Form1 для передачи данных и отображения Form2
В представлении конструктора формы 1 щелкните правой кнопкой мыши сетку данных клиента и выберите пункт "Свойства".
В окне "Свойства" выберите значок "События " на верхней панели инструментов.
Дважды щелкните событие DoubleClick, чтобы открыть редактор кода.
В редакторе кода обновите определение метода, чтобы соответствовать следующему образцу:
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 с заказами этого клиента.
Дальнейшие шаги
В зависимости от требований приложения можно выполнить несколько шагов после передачи данных между формами. Некоторые улучшения, которые можно сделать в этом руководстве, включают:
Изменение набора данных для добавления или удаления объектов базы данных. Дополнительные сведения см. в статье "Создание и настройка наборов данных".
Добавление функций для сохранения данных обратно в базу данных. Дополнительные сведения см. в разделе "Сохранение данных обратно в базу данных".