Когда вы программируете приложение Windows Forms, вам непременно потребуется получить переменные из второго окна формы, например из формы параметров или всплывающего окна поиска.
В большинстве руководств будет сказано, что вам нужно открыть вторую форму с помощью ShowDialog (), которая блокирует действия пользователя, пока он не закроет окно второй формы. Например, это не очень хорошо работает для диалога поиска/замены. Это также не очень хорошо работает для пользовательских нарисованных всплывающих форм.
Быстрый способ передачи переменных между формами – использование делегатов. Вы можете установить обработчик события для события закрытия второй формы и обработать событие в первой форме. Это позволяет вам захватывать переменные до закрытия второго окна формы.
Для этого упражнения мы будем предполагать, что у нас есть две формы:
MainForm
OptionsForm
Далее мы будем предполагать, что нажали какую-то кнопку, которая открывает OptionsForm с вызовом метода Show (). Теперь давайте посмотрим на магию:
……. чик …….
OptionsForm theform = new OptionsForm ();
theform.Closing + = новый CancelEventHandler (theform_Closing);
theform.Show ();
}
private void theform_Closing (отправитель объекта, CancelEventArgs e)
{
OptionsForm theform = (OptionsForm) отправитель;
// Захватить переменную из формы параметров. Форма параметров должна установить эту переменную до ее закрытия, а переменная должна быть помечена как открытая.
string localvar = theform.thestringvariable;
}
Это все, что нужно сделать.