Как добавить вторую форму в visual studio
Чтобы добавить еще одну форму в проект, нажмем на имя проекта в окне Solution Explorer (Обозреватель решений) правой кнопкой мыши и выберем Add(Добавить)->Windows Form.
Дадим новой форме какое-нибудь имя, например, Form2.cs:

Итак, у нас в проект была добавлена вторая форма. Теперь попробуем осуществить взаимодействие между двумя формами. Допустим, первая форма по нажатию на кнопку будет вызывать вторую форму. Во-первых, добавим на первую форму Form1 кнопку и двойным щелчком по кнопке перейдем в файл кода. Итак, мы попадем в обработчик события нажатия кнопки, который создается по умолчанию после двойного щелчка по кнопке:
private void button1_Click(object sender, EventArgs e)
Теперь добавим в него код вызова второй формы. У нас вторая форма называется Form2, поэтому сначала мы создаем объект данного класса, а потом для его отображения на экране вызываем метод Show:
private void button1_Click(object sender, EventArgs e)
Теперь сделаем наоборот — чтобы вторая форма воздействовала на первую. Пока вторая форма не знает о существовании первой. Чтобы это исправить, надо второй форме как-то передать сведения о первой форме. Для этого воспользуемся передачей ссылки на форму в конструкторе.
Итак перейдем ко второй форме и перейдем к ее коду — нажмем правой кнопкой мыши на форму и выберем View Code (Просмотр кода). Пока он пустой и содержит только конструктор. Поскольку C# поддерживает перегрузку методов, то мы можем создать несколько методов и конструкторов с разными параметрами и в зависимости от ситуации вызывать один из них. Итак, изменим файл кода второй формы на следующий:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace HelloApp < public partial class Form2 : Form < public Form2() < InitializeComponent(); >public Form2(Form1 f) < InitializeComponent(); f.BackColor = Color.Yellow; >> >
Фактически мы только добавили здесь новый конструктор public Form2(Form1 f) , в котором мы получаем первую форму и устанавливаем ее фон в желтый цвет. Теперь перейдем к коду первой формы, где мы вызывали вторую форму и изменим его на следующий:
private void button1_Click(object sender, EventArgs e)
Поскольку в данном случае ключевое слово this представляет ссылку на текущий объект — объект Form1, то при создании второй формы она будет получать ее (ссылку) и через нее управлять первой формой.
Теперь после нажатия на кнопку у нас будет создана вторая форма, которая сразу изменит цвет первой формы.
Мы можем также создавать объекты и текущей формы:
private void button1_Click(object sender, EventArgs e)
При работе с несколькими формами надо учитывать, что одна из них является главной — которая запускается первой в файле Program.cs. Если у нас одновременно открыта куча форм, то при закрытии главной закрывается все приложение и вместе с ним все остальные формы.
Не добавляется новая форма в проект C# Visual Studio 19

Создаю небольшое Windows Forms приложение и необходимо добавить вторую форму, но почему то когда нажимаю на проект правой кнопкой мыши -> Добавить -> Форма Windows Forms, я не вижу в принципе пункта для создания формы (как я посмотрел в разных источниках, пункт должен называться Windows Forms). Мб я где то не там ищу, тк вариант с не установленными компонентами вероятно отпадает, поскольку проект с одной формой я смог создать. Подскажите, пожалуйста, что может быть не так? Если какой то информации не хватает, спрашивайте, дополню. Заранее спасибо!
Отслеживать
задан 13 мар 2021 в 7:32
90 9 9 бронзовых знаков
Вы не устанавливали обновление? У меня такая же проблема возникла после установки обновление.
1 янв 2022 в 16:38
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Проблема решена, всё таки не был установлен компонент «Разработка классических приложений .NET», только странно почему всё же проект WindowsForms создался
Отслеживать
ответ дан 13 мар 2021 в 8:21
90 9 9 бронзовых знаков
- winforms
- visual-studio
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Передача данных между формами
Область применения:
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 с заказами этого клиента.
Следующие шаги
В зависимости от требований приложения может потребоваться выполнить несколько шагов после передачи данных между формами. Некоторые улучшения, которые можно сделать в этом руководстве, включают:
- Изменение набора данных для добавления или удаления объектов базы данных. Дополнительные сведения см. в разделе, посвященном созданию и настройке наборов данных.
- Добавление функциональности для сохранения данных в базу данных. Дополнительные сведения см. в разделе «Сохранение данных обратно в базу данных».
См. также
Пошаговое руководство. Сбор данных с помощью Формы Windows
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code 
В этом пошаговом руководстве показано, как открывается форма Windows Forms из настройки уровня документа для Microsoft Office Excel, выполняется сбор сведений от пользователя и запись этих сведений в ячейку листа.
Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO. См. сведения о функциях, доступных по Приложение Office и типу проекта.
Хотя в этом пошаговом руководстве используется проект уровня документа для Excel, рассмотренная процедура также применима и к другим проектам Office.
Необходимые компоненты
Для выполнения этого пошагового руководства требуются следующие компоненты:
- Выпуск Visual Studio, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в статье «Настройка компьютера для разработки решений Office».
- Excel 2013 или Excel 2010.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки Visual Studio.
Создание нового проекта
Первым шагом является создание проекта книги Excel.
Создание проекта
- Создайте проект книги Excel с именем WinFormInputи выберите в мастере Создать новый документ . Дополнительные сведения см. в статье «Практическое руководство. Создание проектов Office в Visual Studio». Visual Studio открывает новую книгу Excel в конструкторе и добавляет проект WinFormInput в обозреватель решений.
Добавление элемента управления NamedRange на лист
Добавление именованного диапазона в Sheet1
- Выберите ячейку A1 в Sheet1 .
- В поле Имя введите formInput. Поле Имя находится слева от строки формул над столбцом A листа.
- Нажмите ВВОД. Элемент управления NamedRange добавляется в ячейку A1. Видимые изменения на листе отсутствуют, но значение formInput появляется в поле Имя (над листом слева) и в окне Свойства при выборе ячейки A1 .
Добавление формы Windows Form в проект
Создайте форму Windows Form, чтобы запрашивать сведения у пользователя.
Добавление формы Windows Forms
- Выберите проект WinFormInput в обозревателе решений.
- В меню Проект выберите пункт Добавить форму Windows.
- Дайте этой форме имя GetInputString.vb или GetInputString.cs, а затем нажмите кнопку Добавить. Новая форма откроется в конструкторе.
- Добавьте в форму TextBox и Button .
- Выберите кнопку, найдите свойство Текст в окне Свойства и измените текст на ОК. Затем добавьте в ThisWorkbook.vb или ThisWorkbook.cs код для сбора информации от пользователя.
Отображение формы Windows Form и сбор сведений
Создайте экземпляр формы Windows GetInputString и отобразите его, а затем запишите информацию от пользователя в ячейку листа.
Отображение формы и сбор информации
- Щелкните правой кнопкой мыши файл ThisWorkbook.vb или ThisWorkbook.cs в обозревателе решений, а затем нажмите кнопку Просмотр кода.
- В обработчике событий Open ThisWorkbook добавьте следующий код для объявления переменной формы GetInputString , а затем отобразите эту форму.
Примечание. В C# необходимо добавить обработчик событий, как показано в событии Startup ниже. Сведения о создании обработчиков событий см. в статье «Практическое руководство. Создание обработчиков событий в проектах Office».
private void ThisWorkbook_Startup(object sender, System.EventArgs e) < this.Open += new Microsoft.Office.Interop.Excel.WorkbookEvents_OpenEventHandler(ThisWorkbook_Open); >private void ThisWorkbook_Open()
Private Sub ThisWorkbook_Open() Handles Me.Open Dim inputForm As New GetInputString() inputForm.ShowDialog() End Subpublic void WriteStringToCell(string formData)
Public Sub WriteStringToCell(ByVal formData As String) Globals.Sheet1.formInput.Value2 = formData End SubДалее добавьте в форму код для обработки события нажатия кнопки.
Отправка сведений на лист
Отправка информации в лист
- Щелкните правой кнопкой мыши В GetInputString в обозревателе решенийи выберите Конструктор представлений.
- Дважды щелкните кнопку, чтобы открыть файл кода с добавленным обработчиком событий Click кнопки.
- Добавьте код в обработчик событий для приема входных данных из текстового поля, передачи их в функцию WriteStringToCell , а затем закрытия формы.
Globals.ThisWorkbook.WriteStringToCell(this.textBox1.Text); this.Dispose();Globals.ThisWorkbook.WriteStringToCell(Me.TextBox1.Text) Me.Dispose()Тест
Теперь вы можете запустить проект. Появляется форма Windows Forms, и введенные данные отображаются в листе.
Проверка книги
- Нажмите клавишу F5 для запуска проекта.
- Убедитесь, что форма Windows Forms появилась.
- Введите Hello World в текстовом поле и нажмите кнопку ОК.
- Убедитесь, что сообщение Hello World появилось в ячейке A1 листа.
Следующие шаги
В этом пошаговом руководстве описываются основные принципы отображения формы Windows Forms и передачи данных в лист. Вам может потребоваться выполнить другие задачи, приведенные ниже.
- Использование элементов управления Windows Forms в книге Excel или документе Word. Дополнительные сведения см. в разделе «Элементы управления Windows Forms» в документах Office.
- Измените пользовательский интерфейс microsoft Приложение Office lication из настройки на уровне документа или надстройки VSTO. Дополнительные сведения см. в разделе «Настройка пользовательского интерфейса Office».
См. также
- Разработка решений Office
- Написание кода в решениях Office
- Программные надстройки VSTO
- Настройки уровня документа программы
- Пошаговое руководство по Word
- Пошаговое руководство по Excel
