Passar variáveis entre Windows Forms Windows sem ShowDialog ()
Quando você estiver programando um aplicativo do Windows Forms, invariavelmente precisará obter variáveis de uma segunda janela de formulário, como um formulário de opções ou um prompt de pesquisa de pop-up..
A maioria dos guias por aí dirá que é necessário abrir o segundo formulário com ShowDialog (), que impede o usuário de fazer qualquer outra coisa até fechar a segunda janela de formulário. Isso não funcionará muito bem para um diálogo localizar / substituir, por exemplo. Também não funciona muito bem para formulários pop-up personalizados.
A maneira rápida de passar variáveis entre os formulários é usando Delegados. Você pode definir um manipulador de eventos para o evento Closing do segundo formulário e manipular o evento no primeiro formulário. Isso permite capturar variáveis antes que a segunda janela de formulário seja fechada.
Para este exercício, vamos assumir que temos duas formas:
MainForm
OptionsForm
Vamos supor ainda que clicamos em algum tipo de botão que abre o OptionsForm com uma chamada de método Show (). Agora vamos dar uma olhada na mágica:
… recorte… .
OptionsForm theform = novo OptionsForm ();
theform.Closing + = new CancelEventHandler (theform_Closing);
theform.Show ();private void theform_Closing (remetente do objeto, CancelEventArgs e)
OptionsForm theform = (OptionsForm) remetente;
// Pega a variável do formulário de opções. O formulário de opções deve definir essa variável antes de fechar, e a variável deve ser marcada como public.
string localvar = theform.thestringvariable;
Isso é tudo que existe para isso.