Usuário com melhor resposta
chamar uma Função que esta dentro de uma String

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.
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- Sugerido como Resposta Eduardo Cury segunda-feira, 11 de abril de 2011 15:41
- Marcado como Resposta Harley AraujoModerator sexta-feira, 15 de abril de 2011 13:48
-
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- Sugerido como Resposta Julio Cesar Cosmo, MCP, MCTS terça-feira, 12 de abril de 2011 00:54
- Marcado como Resposta Harley AraujoModerator sexta-feira, 15 de abril de 2011 13:48
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- Sugerido como Resposta Eduardo Cury segunda-feira, 11 de abril de 2011 15:41
- Marcado como Resposta Harley AraujoModerator sexta-feira, 15 de abril de 2011 13:48
-
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.
-
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- Sugerido como Resposta Julio Cesar Cosmo, MCP, MCTS terça-feira, 12 de abril de 2011 00:54
- Marcado como Resposta Harley AraujoModerator sexta-feira, 15 de abril de 2011 13:48