Передача переменных между Windows Forms Windows без ShowDialog ()
Когда вы программируете приложение 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) отправитель;
// Получить переменную из формы параметров. Форма параметров должна установить эту переменную до ее закрытия, а переменная должна быть помечена как общедоступная..
строка localvar = theform.thestringvariable;
Это все, что нужно сделать.