none
Chamar funções de outros Forms RRS feed

  • Pergunta

  • Tenho uma aplicação que executa a chamada de outros Forms.

    public void NovoFormulario(Form formulario)
            {
                winControl1.AddForm(formulario, string.Empty, null);
                winControl1.ActivateNext();
            }


    Tenho também uma barra de controle.

    O objeto 'winControl1' contem um método que me retorna qual formulário está aberto e selecionado.

    private void btnPesquisar_Click(object sender, EventArgs e)
            {
                ExecutarManipulacao(Executar.PesquisaObjetos, winControl1.ActiveForm);
            }

    Preciso chamar métodos presentes nos formulários filhos de uma forma simples e direta. Por exemplo, o formulário de Usuário tem um método chamado 'Salvar'. Preciso fazer com que ao pressionar o botão 'Salvar' da barra de controles, esse método seja executado. Tem que ser de uma maneira dinâmica, onde eu consiga chamar os métodos de uma forma onde eu simplesmente passe qual formulário está selecionado e ele veja se o mesmo tem o método desejado. (Ex: O formulário Usuário tem o método 'Salvar', mas não tem o 'Pesquisar'.

    public void ExecutarManipulacao(Executar modoExecucao, Form formulario)
            {
                try
                {
                    switch (modoExecucao)
                    {
                        case Executar.PesquisaObjetos:                        
                            break;
                        case Executar.NovoObjeto:
                            break;
                        case Executar.SalvarObjeto:
                            formulario.Salvar(); // Como fazer isso?
                            break;
                        case Executar.EditarObjeto:
                            break;
                        case Executar.DeletarObjeto:
                            break;
                        default:
                            break;
                    }
                }
                catch
                {
                }
            }


    Fico no aguardo da ajuda de vocês, muito obrigado.



    quarta-feira, 31 de dezembro de 2014 21:42

Todas as Respostas

  • O caminho é este mesmo se bem entendi o que vc não esta conseguindo é chamar o método pois ele pode ter sido declarado como private void, neste caso declare-o como protected internal void Salvar.

    sexta-feira, 2 de janeiro de 2015 14:29