@Host111

Какой самый лучший способ передать информацию между формами?

В моем проекте, в первой форме пользователь вводит название папки для ее создания, выбирает путь сохранения, и этот путь сохраняется в переменной, значение которой должно передаваться в другие формы. Перепробовал много способов как можно передать данные, часто сталкивался с ситуацией когда после передачи данных, я заходил в любую из форм и значение той переменной в другие больше не передавалось. Подскажите, пожалуйста, как решить?
  • Вопрос задан
  • 150 просмотров
Решения вопроса 2
@WaterSmith
Android-разработчик. Java, Kotlin
Чтобы небыло таких проблем, нужно разграничивать хранение данных и их отображение. Можно изобрести свой велосипед, можно использовать классические решения, например такие как MVP, MVC (Model-View-Controller загуглите).
Основная идея заключается в том, что у вас существует объект (модель), который хранит данные, а все формы (вью), в которых эти данные отображаются, берут их именно из этого объекта. При изменении в одной из форм, данные меняются в объекте и другие формы тут-же обновляют свою информацию (за корректностью этого следит презентер или контроллер).
Ответ написан
Комментировать
@rPman
Где то должна лежать доступной для формы-источника ссылка на форму получателя.

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

Иначе, оформлять сам процесс коммуникаций в виде отдельного класса (а там в зависимости от цели организации этого посредника, либо по классу на вид коммуникаций либо общий для всех сообщений и способов выбора от кого и кому)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@OwDafuq
Много решений.
Пара самых популярных:
1) Конструктор с параметром (или публичное свойство).
//form2
public Form2(string value)
{
	Value = value;
	...
}

//form1
public Form1()
{
	...
}

void OpenNewForm(...)
{
	var form2 = new Form2("myString"); 
	var form2_2 = new Form2
	{
		Value = value
	};
}


2) Singletone объект (но лучше, если у вас есть DI). Объявляете объект, который будет хранить нужные вам переменные в одном месте и вызываете его где вам угодно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы