none
chamar uma Função que esta dentro de uma String RRS feed

  • Pergunta

  • Bom dia,

     

    Gente estou tentando chamar uma função que esta dentro de uma string.

     

    Exemplo:

    String FMetodo = "Salva()";

    agora de alguma forma usar o FMetodo para chamar a função Salvar() que já esta definida no Formulario

     

    Public void Salvar()

    {

          int i = 0 ;

    }

     

    Alguem Sabe com fazer isso?

     

    Desde já Grato.

     

     

    segunda-feira, 11 de abril de 2011 15:07

Respostas

Todas as Respostas

  • Olá,

    Você pode fazer algo como:

    this.GetType().GetMethod(FMetodo).Invoke(this, null);

    Só que no caso FMetodo deveria ter somente a string "Salvar" (sem os parênteses)...


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    segunda-feira, 11 de abril de 2011 15:39
    Moderador
  • André surgiu mais mais uma duvida...

    se o Salvar fosse de um outro formulario?

    exemplo:

    Form1

    {

                  Public void Salvar()

                  {

                            int i = 0 ;

                   }

    }

     

    Form2

    string Fmetodo = "Salvar";

    {

                         this.GetType().GetMethod(FMetodo).Invoke(this, null);

    }

     

    Eu já subistitui para que ficasse assim mas não funcionou...

    this.GetType().GetMethod(FMetodo).Invoke(FORM1, null);

     

    Eu fiz as passagem de parametros certinho quando eu coloco o Breakpoints a variavel que esta subistituindo o this vem preencida corretamente mas me retorna o erro. (Object reference not set to an instance of an object.)

     

    Pode me ajudar?

    desde já Grato.

     

    segunda-feira, 11 de abril de 2011 16:53
  • Olá,

    Então... Você já está com alguma instância de Form1 sendo exibida? Se sim, você precisa de uma referência a ela para conseguir invocar o método... Para pegar a referência do Form já aberto, você pode utilizar o Application.OpenForms para encontrar o formulário já aberto... Seria algo como:

    Form1 formEncontrado = Application.OpenForms.OfType<Form1>().SingleOrDefault();
    if (formEncontrado != null)
      formEncontrado.GetType().GetMethod(FMetodo).Invoke(formEncontrado, null);
    

    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    segunda-feira, 11 de abril de 2011 17:11
    Moderador