A good way to do this in C # is to create an event in the child form.
For example:
public event Action<String> EnderecoSelecionado;
When you create the child form on the parent form, you register for this event:
formFilho.EnderecoSelecionado += enderecoSelecionado_event;
When the user clicks on the child form's grid, you check whether there are registered functions in the event, if any you run it:
if( EnderecoSelecionado != null ) {
EnderecoSelecionado( o_endereco_selecionado );
}
In this way the interface between Father and Son will be very explicit and the same event can be reused in other parts of your application.
This is a common idiom of C #, and I rarely get used to it.