windows forms передача данных между формами

Как передавать данные между формами

Задача 1: Передать текстовую строку из основной формы в дочернюю
Реализация 1: Передать через конструктор дочерней формы
Самый простой способ. Класс дочерней формы конструируется таким образом, чтобы конструктор (или одна из его перегрузок) класса принимал в качестве аргумента или аргументов некие данные. Способ удобен тем, что в дочернюю форму можно передать практически неограниченное количество данных фактически любого типа. Неудобен он тем, что класс дочерней формы в этом случае становится слишком узкоспециализированным. При разработке небольших проектов это не почувствуется, но если вы возьметесь за масштабное модульное бизнес-приложение, сразу поймете всю узкость данного подхода. Но, тем не менее, не рассмотреть его было бы несправедливо.
Листинг 1.1.1. Основная форма:

Думаю, все понятно и без дальнейших комментариев :-)

Реализация 3: Передача данных через свойство/переменную статического класса.
Суть способа в следующем: использовать для временного буфера свойство или переменную статического класса. Данный способ несколько более универсальный. Хотя бы тем, что он не требует специализации класса дочерней формы, т.е. нам не придется добавлять в класс дочерней формы дополнительные свойства или переменные. Только обработать событие Load формы.

Листинг 1.3.1. Статический класс:

Реализация 2. Через событие закрытия окна.
При вызове дочерней формы мы можем с помощью анонимного метода подписаться на события вызываемой формы. Например, если мы подпишемся на событие закрытия окна, то сможем выполнить некие действия, когда дочерняя форма инициирует это событие (т.е. начнет закрываться).

Листинг 2.2.1. Основная форма

Реализация 3. Через события статического класса.
Опять задействуем посредника в виде статического класса. Однако применим на этот раз иной подход. В основной форме подпишемся на событие ValueChanged статического свойства DataBuffer. Но, поскольку свойство это «из коробки» не имеет подобных событий, его придется создать.

Листинг 2.3.1. Статический класс

На данный момент вроде как все. Скорее всего что-то забыл, поэтому к критике в комментариях буду прислушиваться особенно внимательно.
Best Regards, Aexx

Источник

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

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

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

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

Создание и настройка набора данных с помощью мастера настройки источника данных.

Выбор элемента управления, создаваемого на форме при перетаскивании элементов из окна Источники данных. Дополнительные сведения см. в разделе Установка элемента управления, создаваемого при перетаскивании из окна Источники данных.

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

Создание второй формы с сеткой для отображения данных.

Создание запроса адаптера таблицы для получения заказов определенного клиента.

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

Предварительные требования

в этом пошаговом руководстве используется SQL Server Express LocalDB и образец базы данных Northwind.

если у вас нет SQL Server Express LocalDB, установите его на странице загрузки SQL Server Expressили с помощью Visual Studio Installer. в Visual Studio Installer SQL Server Express LocalDB можно установить как часть рабочей нагрузки хранения и обработки данных или как отдельный компонент.

Установите учебную базу данных Northwind, выполнив следующие действия.

Откроется окно редактора запросов.

скопируйте скрипт Transact-SQL Northwind в буфер обмена. этот сценарий T-SQL создает базу данных Northwind с нуля и заполняет ее данными.

По истечении короткого времени выполнение запроса завершается и создается база данных Northwind.

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

В Visual Studio в меню Файл выберите пункты Создать > Проект.

Назовите проект пассингдатабетвинформс и нажмите кнопку ОК.

Создается проект 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, возвращающая строки и нажмите кнопку Далее.

Щелкните Далее.

Снимите флажок Вернуть таблицу данных (DataTable) и нажмите кнопку Далее.

Нажмите кнопку Готово.

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

Щелкните правой кнопкой мыши Form2 и выберите пункт Просмотреть код, чтобы открыть Form2 в редакторе кода.

Добавьте следующий код в Form2 после метода Form2_Load :

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

В Form1 щелкните правой кнопкой мыши сетку данных клиентов и выберите пункт Свойства.

В окне Свойства выберите События.

Дважды щелкните событие CellDoubleClick.

Откроется окно редактора кода.

Обновите определение метода в соответствии со следующим примером:

Запустите приложение

Нажмите клавишу F5 для запуска приложения.

Дважды щелкните запись клиента в форме Form1, чтобы открыть Form2 с заказами этого клиента.

Дальнейшие действия

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

Изменение набора данных для добавления или удаления объектов базы данных. Дополнительные сведения см. в разделе, посвященном созданию и настройке наборов данных.

Добавление функциональности для сохранения данных в базу данных. Дополнительные сведения см. в разделе Сохранение данных обратно в базу данных.

Источник

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

Здравствуй ХэшКод, скажите у меня есть

На Form1 есть richTextBox1, и на Form2 есть richTextBox1, так вот хотелось бы сделать чтобы при нажатии на кнопку всё что есть в richTextBox1 на Form2 данные передавались в richTextBox1 на Form1. я попробовал изменить поле Modifer на Public, b таким кодом переместить данные

Но он почему-то не работает( Подскажите как передать данные между формами?

3 ответа 3

Всю необходимую форме (или любому объекту) информацию следует передавать в конструкторе:

Как вариант, можно использовать делегаты, и передавать данные через них.

dVTjR

В Form1 делаем richTextBox1 public. В ней же создаем экземпляр класса Form2

Далее, описываем метод:

Ну и собственно в Form2:

P.S. Этот вариант будет сразу же передавать весь текст в Form1, с кнопкой я думаю вы тоже разберетесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками c# или задайте свой вопрос.

Связанные

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.11.12.40742

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

Windows forms передача данных между формами

HeaderFooterSprite

HeaderFooterSprite

trans

Спрашивающий

trans

Общие обсуждения

trans

trans

Все ответы

trans

trans

Я обычно делаю свойство или публичный член класса формы. Но тогда надо передавать сам объект формы. Можно сделать сторонний Static Class для обмена данными.

Это корректно или обычно делают как-то иначе?

trans

trans

Один из способов передачи параметров между формами:

static public int i;

— задать значение ей, например при загрузке формы:

— во второй форме можно обратиться к переменной, например вывести значение переменной в заголовок формы:

trans

trans

На мой взгляд использовать сторонний Static Class целесообразно для «долгого» хранения переменных.

Если необходимо единовременно передать данные между формами, то делаю следующее:

1.В форму куда необходимо передать данные (ФормаКуда) в коде пишем:

public partial class ФормаКуда: Form
<
ФормаОтКуда mainForm = null;
public Otsrochka(ФормаОтКуда main)

<
InitializeComponent();
mainForm = main;
>

2. Вызываем ФормаКуда из ФормаОтКуда:

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • windows forms открыть новую форму
  • windows forms иконка приложения