#7 — Переход между окнами в приложении
Завершающим штрихом нашей программы станет реализация перехода между окнами в приложении. При регистрации или авторизации пользователь будет переходить на новые окна, что будет свидетельствовать про успешную обработку его действий.
Видеоурок
Для перехода между страницами необходимо выполнять две задачи:
- скрывать окно в котором сейчас находитесь;
- открывать новое окно приложения.
Ниже приведен код для реализации подобного функицонала:
this.Hide(); // Скрываем нынешнее окно // Создаем объект на основе определенного окан MainForm mainForm = new MainForm(); // Показываем новое окно mainForm.Show();
Программа обучения
Если вас интересует более углубленное изучение самого языка и его фреймворков, то предлагаем вашему внимаю наш полный курс по изучению C# . За курс вы изучите язык C#, научитесь делать веб проекты на основе ASP NET и строить приложения при помощи WinForms и WPF.
Передача данных между формами
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Наборы данных и связанные классы являются устаревшими технологиями платформа .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.
- Если у вас нет SQL Server Express LocalDB, установите его на странице скачивания SQL Server Express или с помощью Установщика Visual Studio. В установщике Visual Studio SQL Server Express LocalDB можно установить как часть рабочей нагрузки хранилища данных и обработки или как отдельный компонент.
- Установите пример базы данных Northwind, выполнив следующие действия.
- В Visual Studio откройте окно обозреватель объектов SQL Server. (SQL Server обозреватель объектов устанавливается как часть рабочей нагрузки хранилища данных и обработки в Visual Studio Installer.) Разверните узел SQL Server. Щелкните правой кнопкой мыши экземпляр LocalDB и выберите новый запрос. Откроется окно редактора запросов.
- Скопируйте скрипт Northwind Transact-SQL в буфер обмена. Этот скрипт T-SQL создает базу данных Northwind с нуля и заполняет ее данными.
- Вставьте скрипт T-SQL в редактор запросов и нажмите кнопку «Выполнить «. Через некоторое время запрос завершает работу и создается база данных Northwind.
Создание проекта приложения Windows Forms
- В Visual Studio в меню Файл выберите пункты Создать>Проект.
- Разверните Visual C# или Visual Basic в левой области, а затем выберите «Рабочий стол Windows».
- В средней области выберите тип проекта приложения Windows Forms.
- Назовите проект PassingDataBetweenForms и нажмите кнопку «ОК«. Создается проект PassingDataBetweenForms, который добавляется в Обозреватель решений.
Создание источника данных
- Чтобы открыть окно «Источники данных» , в меню «Данные » щелкните » Показать источники данных».
- В окне Источники данных выберите Добавить новый источник данных, чтобы запустить Мастер настройки источника данных.
- На странице Выбор типа источника данных выберите элемент База данных и нажмите Далее.
- На странице Выбор модели базы данных выберите Набор данных и нажмите кнопку Далее.
- На странице Выбор подключения к базе данных выполните одно из следующих действий:
- Если подключение к учебной базе данных Northwind доступно в раскрывающемся списке, то выберите его.
- Выберите Новое подключение для открытия диалогового окна Добавить/изменить подключение.
- Если базе данных требуется пароль и выбран параметр для включения конфиденциальных данных, выберите параметр и нажмите кнопку Далее.
- На странице «Сохранить строка подключения в файл конфигурации приложения» нажмите кнопку «Далее«.
- Разверните узел Таблицы на странице Выбор объектов базы данных.
- Выберите таблицы Customers и Orders и нажмите кнопку Готово. NorthwindDataSet добавляется в проект, и таблицы Customers и Orders отображаются в окне Источники данных.
Создание первой формы (Form1)
Вы можете создать сетку с привязкой к данным (элемент управления DataGridView) с помощью перетаскивания узла Customers из окна Источники данных на форму.
Создание сетки с привязкой к данным на форме
- Перетащите главный узел Customers из окна Источники данных на форму Form1. На форме Form1 появляется DataGridView и панель инструментов (BindingNavigator) для перемещения по записям. В области компонентов появляется NorthwindDataSet, CustomersTableAdapter, BindingSource и BindingNavigator.
Создание второй формы
Создайте вторую форму для передачи данных.
- В меню Проект выберите пункт Добавить форму Windows.
- Оставьте имя по умолчанию Form2 и нажмите кнопку Добавить.
- Перетащите главный узел Orders из окна Источники данных на форму Form2. На форме Form2 появляется DataGridView и панель инструментов (BindingNavigator) для перемещения по записям. В области компонентов появляется NorthwindDataSet, CustomersTableAdapter, BindingSource и BindingNavigator.
- Удалите OrdersBindingNavigator из области компонентов. OrdersBindingNavigator исчезает из Form2.
Добавление запроса TableAdapter
Добавьте запрос TableAdapter в Form2, чтобы загрузить заказы для выбранного клиента в Form1.
- Дважды щелкните файл NorthwindDataSet.xsd в обозревателе решений.
- Щелкните правой кнопкой мыши элемент OrdersTableAdapter и выберите пункт Добавить запрос.
- Оставьте параметр по умолчанию Использовать инструкции SQL и нажмите кнопку Далее.
- Оставьте параметр по умолчанию Инструкция SELECT, возвращающая строки и нажмите кнопку Далее.
- Добавьте в запрос предложение 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 = ? .
Создание метода в Form2 для передачи данных в
- Щелкните правой кнопкой мыши Form2 и выберите пункт Просмотреть код, чтобы открыть Form2 в редакторе кода.
- Добавьте следующий код в Form2 после метода Form2_Load :
internal void LoadOrders(String CustomerID)
Friend Sub LoadOrders(ByVal CustomerID As String) OrdersTableAdapter.FillByCustomerID(NorthwindDataSet.Orders, CustomerID) End SubСоздание метода в Form1 для передачи данных и отображения Form2
- В Form1 щелкните правой кнопкой мыши сетку данных клиентов и выберите пункт Свойства.
- В окне Свойства выберите События.
- Дважды щелкните событие CellDoubleClick. Откроется окно редактора кода.
- Обновите определение метода в соответствии со следующим примером:
private void customersDataGridView_DoubleClick(object sender, EventArgs e)
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 с заказами этого клиента.
Следующие шаги
В зависимости от требований приложения может потребоваться выполнить несколько шагов после передачи данных между формами. Некоторые улучшения, которые можно сделать в этом руководстве, включают:
- Изменение набора данных для добавления или удаления объектов базы данных. Дополнительные сведения см. в разделе, посвященном созданию и настройке наборов данных.
- Добавление функциональности для сохранения данных в базу данных. Дополнительные сведения см. в разделе «Сохранение данных обратно в базу данных».
См. также
Переход между формами c++
Есть 2 формы (MyForm и MyForm 1) , нужно что бы после нажатия на кнопку (перейти) открывалась вторая форма.
if (Login == RL && Password == RP) < MyForm1->Show(); MessageBox::Show("Login and Password is right!", "Your AUTH"); > else < MessageBox::Show("Login or Password is WRONG!", "Your AUTH"); >>Проблема в том, что когда я добавляю в код MyForm1->Show(); , то мне выдается ошибка (требуется идентификатор) Начал недавно изучать плюсы, ответа не нашел пока.
Отслеживать
4,894 8 8 золотых знаков 15 15 серебряных знаков 29 29 бронзовых знаков
задан 27 янв 2019 в 13:56
Как в Visual basic сделать кнопки перехода между формами.
В общем Нужны кнопки ,подобные программам инсталляции программ.То есть как бы меню(Написан текст,и несколько кнопок для перехода на другие формы).Я пишу:
Me.hide()
Form2.Show()
Но при этом при нажатии наблюдается «Моргание»при переходе между формами,и еще следующая форма появляется в новом месте.Как сделать,чтобы была просто как в проге инсталяции или меню,например,любой игры. Пользуюсь программой Visual studioГолосование за лучший ответ
попробуй me.close или прозрачность формы поставь
если моргания остается то советую использовать одну форму но с разными Panel или GroupBox. это будет правильнееПохожие вопросы
