Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 23.06.2020
Сообщений: 166

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

26.04.2021, 12:34. Показов 3334. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имею приложение, где хочу, чтобы при нажатии на кнопку "добавить", открывалась новая форма ( это уже реализовано ), и потом из этой формы передавались в другую несколько значений.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.04.2021, 12:34
Ответы с готовыми решениями:

Как передать объект из одной формы в список другой формы
Здравствуйте все. Возникла проблема: Есть 2 формы, в каждой из них есть класс kvit:public class kvit { public...

Как передать в метод формы данные из другой формы?
Народ, подскажите юзеру: создал на Visual C++ 2005 с помощью designer'а Form1 с единственной кнопкой на ней. Вызываю по нажатию этой...

Как передать данные из одной формы другой, если формы вызываються через MDI форму?
Я создал MDI форму для которой добавил две toolstrip button вызывающие форму1 и форму2 внутри MDI формы. Форма1 служит для ввода данных....

16
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.04.2021, 12:50
Как передать данные из одной формы в другую
1
0 / 0 / 0
Регистрация: 23.06.2020
Сообщений: 166
26.04.2021, 12:51  [ТС]
Даценд, Оттуда информация не робит. Например, 2.5 метод.
Я всёравно не могу передавать данные ( когда я присвоил переменной значение Owner, то всёравно VS пишет, что свойств label1, textbox1, которые находятся в форме-владельце, нету )
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.04.2021, 12:53
Цитата Сообщение от CyberMyzhik Посмотреть сообщение
Я всёравно не могу передавать данные.
Покажите свой код
1
0 / 0 / 0
Регистрация: 23.06.2020
Сообщений: 166
26.04.2021, 12:54  [ТС]
Даценд,

C#
1
2
3
4
5
6
7
8
9
 private void button1_Click(object sender, EventArgs e)
        {
            Main_Form main = this.Owner as Main_Form;
 
            string s = textBox1.Text;
 
           main.label1.text = "text"; 
 
        }
Пишет, что недоступен из-за уровня защиты.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.04.2021, 13:08
Создайте в главной форме открытое (public) поле и присваивайте значение этому полю.
0
0 / 0 / 0
Регистрация: 23.06.2020
Сообщений: 166
26.04.2021, 13:10  [ТС]
Даценд, А это разве не нарушает ООП?
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.04.2021, 14:20
Лучший ответ Сообщение было отмечено CyberMyzhik как решение

Решение

Цитата Сообщение от CyberMyzhik Посмотреть сообщение
А это разве не нарушает ООП?
Немного нарушает. Но воспользоваться методом 2.5 (передачей с помощью свойства Owner) без открытых полей/свойств в более ранней форме не получится. Придется либо открывать контролы (устанавливать модификатор доступа в значение public), либо добавлять public поле/свойство.
1
68 / 56 / 15
Регистрация: 30.01.2020
Сообщений: 332
26.04.2021, 15:23
CyberMyzhik, создайте объект, который будет хранить ваши данные, и обращайтесь к нему откуда угодно. А формам друг о друге знать не стоит.
1
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
26.04.2021, 15:32
Лучший ответ Сообщение было отмечено CyberMyzhik как решение

Решение

1. Создайте класс-контейнер для передачи данных а папке Models проекта
2. В код Главной и вторичных форм добавьте usinig на папку Models
3. Перед вызовом вторичной формы код Главной создает экземпляр класса-контейнера, заполняет его данными, после чего вызывает конструктор нужной вторичной формы, передавая ему параметром ссылку на контейнер
4. Напишите конструктор вторичной формы, принимающий параметр - контейнер. В этом конструкторе данные из контейнера перенесите в соответствующие контролы.

Эта же схема используется и при обратной передачи из вторичной формы в Главную. После того, как вторичная форма что-то сделала и занесла какой-то результат в контейнер, Главная спокойно забирает его (результат) из этого же контейнера.

Никаких правок области видимости ни в каких формах при этом вносить не нужно.
1
HF
 Аватар для HF
1316 / 895 / 200
Регистрация: 09.09.2011
Сообщений: 2,687
Записей в блоге: 2
27.04.2021, 10:43
Цитата Сообщение от Даценд Посмотреть сообщение
Придется либо открывать контролы (устанавливать модификатор доступа в значение public), либо добавлять public поле/свойство.
Почему никто не упомянул event (события)? То что в п. 2.7.2. Запугали народ - написали что сложно в понимании. А там всего 4 строки. И помоему совершенно нормальный подход для оповещения об изменениях. Ему же именно нужна реакция сразу на изменения, а не "забрать потом из коробки значений".
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.04.2021, 13:30
Цитата Сообщение от HF Посмотреть сообщение
Ему же именно нужна реакция сразу на изменения
Из чего Вы сделали вывод о том, что ему нужно, чтобы Главная форма реагировала на какие-то изменения во вторичной форме ?
0
HF
 Аватар для HF
1316 / 895 / 200
Регистрация: 09.09.2011
Сообщений: 2,687
Записей в блоге: 2
27.04.2021, 14:31
Цитата Сообщение от MsGuns Посмотреть сообщение
Из чего Вы сделали вывод о том, что ему нужно, чтобы Главная форма реагировала на какие-то изменения во вторичной форме ?
видимо отсюда
Цитата Сообщение от CyberMyzhik Посмотреть сообщение
чтобы при нажатии на кнопку "добавить", ... , и потом из этой формы передавались в другую несколько значений.
Ещё отсюда
Цитата Сообщение от CyberMyzhik Посмотреть сообщение
Пишет, что недоступен из-за уровня защиты.
Жмёт кнопку и хочет в другой форме изменения.
0
sleep
 Аватар для I can
4941 / 4624 / 842
Регистрация: 13.04.2015
Сообщений: 9,801
27.04.2021, 14:36

Не по теме:

Чем больше узнаю С#, тем больше нравится VB.Net, там таких заморочек нет, хотя можно и там также заморочиться при желании.

0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.04.2021, 14:52
HF, Я понял так, что ему нужно, чтобы Главная форма не только открывала вторичную, но и еще что-то ей передавала. О каких "изменениях" в открываемой вторичной форме шла речь ?
1
HF
 Аватар для HF
1316 / 895 / 200
Регистрация: 09.09.2011
Сообщений: 2,687
Записей в блоге: 2
27.04.2021, 15:14
Цитата Сообщение от MsGuns Посмотреть сообщение
Главная форма не только открывала вторичную, но и еще что-то ей передавала. О каких "изменениях" в открываемой вторичной форме шла речь ?
ЭЭэммм... а передача это не изменения?
А в его примере прям вот и показано - изменить текст в лейбле.

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от I can Посмотреть сообщение
Чем больше узнаю С#, тем больше нравится VB.Net, там таких заморочек нет, хотя можно и там также заморочиться при желании.
"Нельзя просто взять и записать значение в другую форму" (картинка с Боромиром)

0
sleep
 Аватар для I can
4941 / 4624 / 842
Регистрация: 13.04.2015
Сообщений: 9,801
27.04.2021, 15:25

Не по теме:

Цитата Сообщение от HF Посмотреть сообщение
Нельзя просто взять и записать значение в другую форму" (картинка с Боромиром)
Нельзя, согласен, но если хочется, то на VB.Net можно ИмяФормы.Переменная , главное чтобы переменная была Public

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2021, 15:25
Помогаю со студенческими работами здесь

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

Как передать значение формы в другой файл?
После редиректа из формы отправки письма на другой файл нужно вывести сообщение: <div><? $_POST?> сообщение успешно...

Как передать события на другой элемент формы?
Имею DataGridView и TextBox Как сделать так, чтобы изменялся TextBox при нажатии клавиш при этом: - фокус стоит на DataGridViev -...

Как передать значение с одной формы на другой
В общем есть 3 формы: -авторизация -меню -теория с начало пользователь авторизуется и если он ввел пароль администратора то...

Как передать управление от одной формы другой?
Здравствуйте. Не могу понять как передать управление из одной формы в другую. В начале запуска программы запускается форма...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru