REFERENCIAR O MDI PAI DO FILHO

LUIS.HERRERA 01/03/2013 16:40:40
#419780
Boa tarde.
Estou usando um código que cria um delegate e associa aos botões do form pai para efetuarem ações sobre o form filho. Está funcionando bem, mas surgiu um problema.

Ao clicar no botão, ele executa primeiro o código que está no botão, e depois o código associado do delegate, mas eu precisava que fosse ao contrário, ou seja, executar o delegate e depois o código interno do botão.

Como não consegui isso, fui por outro caminho, que é após executar o delegate eu quero que o form filho chave um método do form Pai, mas não estou conseguindo.

Se eu usar o mesmo princípio feito no pai para acessar o filho:
EventHandler dcancel = delegate //delegate cancela Inclusão/alteracao
{
IAcionaBtAmbienteCancelaInclusao frm = MeuApp.Ambiente.ActiveForm.ActiveMdiChild as IAcionaBtAmbienteCancelaInclusao;
if (frm != null)
{ frm.AcionaCancelarInclusao(); }
};

O C# aceita, porém eu só criei um evento e não tenho como associá-lo a nada nesse caso e executar na hora certa.

Dúvida:
Como eu posso executar o método público do form PAI pelo filho, no caso:

MeuApp.Ambiente.AcionaCancelarInclusao(); ???? não consigo fazer isso.

OCELOT 01/03/2013 19:36:52
#419785
Resposta escolhida
Se o código está no form filho é só você pegar a referencia do form pai pela propriedade MdiParent e converter ele para o tipo do form pai

Por exemplo, digamos que você tem um botão no form filho e quando você clica nele você quer chamar um método público do form pai, considerando que o tipo do form pai seja chamado de FormPai seria

((FormPai)MdiParent).NomeDaFuncaoQueQueroChamar();

Mas isso só funciona se o código estiver dentro do form filho, senão você precisa ter uma referencia para o form pai.
LUIS.HERRERA 04/03/2013 10:42:10
#419853
OCELOT muito obrigado, funcionou perfeitamente. Tentei um monte de coisas, mas nunca podia imaginar nexta sintaxe. Tentei localizar o tal MDIParente, mas usando só o ponto após o nome não aparecia, fica complicado [Ô]Adivinar[Ô] que tem de usar parênteses dessa forma.

Boa semana.
Tópico encerrado , respostas não são mais permitidas