Когда вы программируете приложение Windows Forms, вам обязательно нужно будет получить переменные из второго окна формы, например, в форме параметров или всплывающей подсказке.
Большинство проводников там расскажут вам, что вам нужно открыть вторую форму с помощью ShowDialog (), которая блокирует пользователя от чего-либо еще, пока не закрывает второе окно формы. Например, это не очень хорошо работает для поиска / замены. Он также не будет работать очень хорошо для пользовательских созданных всплывающих окон.
Быстрый способ передачи переменных между формами - использование делегатов. Вы можете установить обработчик событий для события закрытия второй формы и обработать событие в первой форме. Это позволяет захватывать переменные перед закрытием второго окна формы.
Для этого упражнения мы будем предполагать, что у нас есть две формы:
MainForm
OptionsForm
Мы также предположим, что мы нажали какую-то кнопку, которая открывает функцию OptionsForm с помощью вызова метода Show (). Теперь давайте посмотрим на магию:
……. snip…….
OptionsForm theform = new OptionsForm(); theform.Closing += new CancelEventHandler(theform_Closing); theform.Show();
}
private void theform_Closing(object sender, CancelEventArgs e) {
OptionsForm theform = (OptionsForm)sender;
// Grab the variable from the options form. The options form should set this variable before it closes, and the variable should be marked as public. string localvar = theform.thestringvariable;
}
Вот и все.