There are several ways you can do this. The one I imagine is easiest is to give your new Form an object of what you need to use in your form1
//form1
Form2 form2 = new Form2(seuResultado);
if(form2.ShowDialog() == DialogResult.OK)
{
// adicione o que você quer fazer com o objeto alterado no seu form1
// ex:
textBox1.Text = seuResultado.alteracoesQuePreciso;
}
//form2
SeuResultado seuResultado;
public Form2(SeuResultado seuResultado)
{
InitializeComponent();
this.seuResultado = seuResultado;
}
On your form2 when you have finished modifying seuResultado
inside your onClick button you confirm that the result is ready to be returned
seuResultado.alteracoesQuePreciso = TudoQuePrecisa;
DialogResult = DialogResult.OK;
And your form2 will close your result will be ready to be used in form1.
In this way your form1
will be 'on hold' until you finalize your form2
If you need to leave both forms open and work with them simultaneously, I think the easiest way is to pass a delegate to form2.
In form1 you add in your method to update InvokeRequired checking, to avoid problem with Threads
public void Atualizar(SeuResultado seuResultado)
{
if(InvokeRequired)
{
Invoke(new Action(() => Atualizar(seuResultado)));
return;
}
textBox1.Text = seuResultado.alteracoesQuePreciso;
}
// para criar seu form2 você passa seu metodo de atualização como parametro
Form2 f = new Form2(Atualizar);
f.Show();
And in form2
you modify the constructor with a delegate
to update form1
Action<SeuResultado> action;
public Form2(Action<SeuResultado> action)
{
InitializeComponent();
this.action = action;
}
public void EnviarAtualizacao()
{
//SeuResultado res
action(res);
}