Как передать значение из одной формы в другую c
Перейти к содержимому

Как передать значение из одной формы в другую c

  • автор:

Как передать значение переменной из одной формы в другую?

Если нужно передавать в существующую форму без создания новой, можно сохранять переменную в каком-нибудь static классе, либо в properties.

Ответ написан более трёх лет назад

Комментировать

Нравится Комментировать

Ответы на вопрос 1

petermzg

Самый лучший программист

Передача данных между формами

Наборы данных и связанные классы являются устаревшими технологиями платформа .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.

  1. Если у вас нет SQL Server Express LocalDB, установите его на странице скачивания SQL Server Express или с помощью Установщика Visual Studio. В установщике Visual Studio SQL Server Express LocalDB можно установить как часть рабочей нагрузки хранилища данных и обработки или как отдельный компонент.
  2. Установите пример базы данных Northwind, выполнив следующие действия.
    1. В Visual Studio откройте окно обозреватель объектов SQL Server. (SQL Server обозреватель объектов устанавливается как часть рабочей нагрузки хранилища данных и обработки в Visual Studio Installer.) Разверните узел SQL Server. Щелкните правой кнопкой мыши экземпляр LocalDB и выберите новый запрос. Откроется окно редактора запросов.
    2. Скопируйте скрипт Northwind Transact-SQL в буфер обмена. Этот скрипт T-SQL создает базу данных Northwind с нуля и заполняет ее данными.
    3. Вставьте скрипт T-SQL в редактор запросов и нажмите кнопку «Выполнить «. Через некоторое время запрос завершает работу и создается база данных Northwind.

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

    1. В Visual Studio в меню Файл выберите пункты Создать>Проект.
    2. Разверните Visual C# или Visual Basic в левой области, а затем выберите «Рабочий стол Windows».
    3. В средней области выберите тип проекта приложения Windows Forms.
    4. Назовите проект PassingDataBetweenForms и нажмите кнопку «ОК«. Создается проект PassingDataBetweenForms, который добавляется в Обозреватель решений.

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

    1. Чтобы открыть окно «Источники данных» , в меню «Данные » щелкните » Показать источники данных».
    2. В окне Источники данных выберите Добавить новый источник данных, чтобы запустить Мастер настройки источника данных.
    3. На странице Выбор типа источника данных выберите элемент База данных и нажмите Далее.
    4. На странице Выбор модели базы данных выберите Набор данных и нажмите кнопку Далее.
    5. На странице Выбор подключения к базе данных выполните одно из следующих действий:
      • Если подключение к образцу базы данных Northwind доступно в раскрывающемся списке, выберите его.
      • Выберите Новое подключение для открытия диалогового окна Добавить/изменить подключение.
    6. Если базе данных требуется пароль и выбран параметр для включения конфиденциальных данных, выберите параметр и нажмите кнопку Далее.
    7. На странице «Сохранить строка подключения в файл конфигурации приложения» нажмите кнопку «Далее«.
    8. Разверните узел Таблицы на странице Выбор объектов базы данных.
    9. Выберите таблицы Customers и Orders и нажмите кнопку Готово. NorthwindDataSet добавляется в проект, и таблицы Customers и Orders отображаются в окне Источники данных.

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

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

    Создание сетки с привязкой к данным на форме

    • Перетащите главный узел Customers из окна Источники данных на форму Form1. На форме Form1 появляется DataGridView и панель инструментов (BindingNavigator) для перемещения по записям. В области компонентов появляется NorthwindDataSet, CustomersTableAdapter, BindingSource и BindingNavigator.

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

    Создайте вторую форму для передачи данных.

    1. В меню Проект выберите пункт Добавить форму Windows.
    2. Оставьте имя по умолчанию Form2 и нажмите кнопку Добавить.
    3. Перетащите главный узел Orders из окна Источники данных на форму Form2. На форме Form2 появляется DataGridView и панель инструментов (BindingNavigator) для перемещения по записям. В области компонентов появляется NorthwindDataSet, CustomersTableAdapter, BindingSource и BindingNavigator.
    4. Удалите OrdersBindingNavigator из области компонентов. OrdersBindingNavigator исчезает из Form2.

    Добавление запроса TableAdapter

    Добавьте запрос TableAdapter в 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 = ?

    Создание метода в Form2 для передачи данных в

    1. Щелкните правой кнопкой мыши Form2 и выберите пункт Просмотреть код, чтобы открыть Form2 в редакторе кода.
    2. Добавьте следующий код в Form2 после метода Form2_Load :
    internal void LoadOrders(String CustomerID)
    Friend Sub LoadOrders(ByVal CustomerID As String) OrdersTableAdapter.FillByCustomerID(NorthwindDataSet.Orders, CustomerID) End Sub 

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

    1. В Form1 щелкните правой кнопкой мыши сетку данных клиентов и выберите пункт Свойства.
    2. В окне Свойства выберите События.
    3. Дважды щелкните событие CellDoubleClick. Откроется окно редактора кода.
    4. Обновите определение метода в соответствии со следующим примером:
    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 формы:
    1. Login
    2. Menu
    В форме Login есть textbox2, в который вводится «логин» юзера.
    Есть переменная lg.
    string lg = textbox2.Text;
    Нужно передать переменную lg, из формы Login, в форму Menu.

    • Вопрос задан более трёх лет назад
    • 6758 просмотров

    1 комментарий

    Простой 1 комментарий

    FoggyFinder

    Foggy Finder @FoggyFinder

    вы неправильно ставите вопрос. Вам нужно передать информацию уже после авторизации. Обычный последовательный вызов форм.

    Помогите, как в c# передать значения из одной формы на другую, допустим переменную Y

    У меня получилось, но только с командой f.ShowDialog();
    Form4 f = new Form4();
    f.ShowDialog();
    по другом не работает, как сделать без ShowDialog, что бы не открывало форму .

    Лучший ответ

    Что бы передать данные в другую форму создай аргументы в констукторе класса второй формы и передавай Form4 f = new Form4(агрумент 1, аргумент 2 и так далее сколько надо);
    ShowDialog() — открывает форму поверх основной и не дает переключиться на родительскую. Если надо просто показать и управлять всеми формами исполльзуй Show(). Если открывать не надо вообще то зачем тебе форма? Создай метод который выполнит все вычисления и вернет результат.

    Ниох ФлауэрсМастер (1132) 7 лет назад
    ок, спасибо )
    Ниох ФлауэрсМастер (1132) 7 лет назад
    как так? то есть мне с первой формы надо на вторую закинуть 3 перменные, и где метод создавать ?

    KernelPanic Знаток (413) Прочитайте про конструктор класса. В коде второй формы он будет. И вы сразу поймете как передавать аргументы. То есть даже не передадим аргументы а создадим окно с необходимыми параметрами. В нашем случае это аргументы. Раскрыли бы задачу полностью я бы мог что то вам подсказать конкретнее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *