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

Я сделал второстепенную форму в своем проекте, которая может получать данные из основной формы и должна передать некоторые из них в основную форму при нажатии кнопки.
вот код:

Add.cs:

private void button1_Click(object sender, EventArgs e) { main ma = new main(); ma.optionType = "add"; ma.optionName = txtName.Text; ma.optionURL = txtURL.Text; ma.optionInterval = "12"; //What should I pass here? this.Close(); } 

main.cs:

  private string opt;// create a property public string optionType { get { return opt; } set { opt = value; } } private string opt2;// create a property public string optionName { get { return opt2; } set { opt2 = value; } } private string opt3;// create a property public string optionURL { get { return opt3; } set { opt3 = value; } } private string opt4;// create a property public string optionInterval { get { return opt4; } set { opt4 = value; } } 

Моя проблема в том, что я не знаю, когда пытаться получить данные, поступающие из add.cs после нажатия кнопки1 (в add.cs). С каким событием я должен проверить, пришли ли данные?

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

Вот отличный учебник по делегатам и событиям в C #

http://www.akadia.com/services/dotnet_delegates_and_events.html

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

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

Я просто изменил это на это:
add.cs:

  public string optionType { get; set; } public string optionName { get; set; } public string optionURL { get; set; } public string optionInterval { get; set; } public int yCoord { get; set; } 
  • Обработка кликов для всех элементов управления в форме
  • Понимание событий и обработчиков событий в C #
  • Что означает «Захват мыши» в WPF?
  • Как явным образом выполнить действие по умолчанию из события jQuery
  • jQuery скрыть элемент при нажатии в любом месте страницы
  • Подписка на динамические события C #
  • Делегирование: EventEmitter или Наблюдаемое в Угловом
  • ActionListener для конкретного текста внутри JTextArea?
  • Как получить подписчиков мероприятия?
  • Глобальный захват клавиатуры в приложении C #
  • Использование IDisposable для отмены подписки
  • Давайте будем гением компьютера.