Когато програмирате приложение Windows Forms, непременно ще трябва да получавате променливи от втори формален прозорец, като опция или изскачащ прозорец за търсене.
Повечето от ръководствата там ще ви кажат, че трябва да отворите втория формуляр с ShowDialog (), който блокира потребителя да прави нещо друго, докато не затвори втория прозорец на формуляра. Това няма да работи много добре за диалог за намиране / замяна, например. Той също така няма да работи много добре за персонализирани изтеглени изскачащи форми.
Бързият начин за предаване на променливи между формулярите използва делегатите. Можете да задавате EventHandler за събитието за затваряне на втория формуляр и да обработвате събитието в първата форма. Това ви позволява да заснемете променливи преди втория прозорец на формата да е затворен.
За това упражнение ще приемем, че имаме две форми:
MainForm
OptionsForm
Ще предположим още, че сме кликнали върху някакъв бутон, който отваря OptionsForm с покана за показване на метод (). Сега нека да разгледаме магията:
... срязване ....
ОпцииForm theform = нови опцииForm ();
theform.Closing + = нов CancelEventHandler (theform_Closing);
theform.Show ();
private void theform_Closing (изпращач на обект, CancelEventArgs e)
ОпцииForm theform = (OptionsForm) подател;
// Вземете променливата от формата за опции. Формулярът за опции трябва да зададе тази променлива, преди тя да бъде затворена, а променливата да бъде означена като публична.
string localvar = theform.thestringvariable;
Това е всичко за него.