METODOS DE EXTENSAO

MICHAELL 06/07/2016 16:13:12
#464567
Ola galera..

procurei no google, em ingles e portugues e nao encontrei...

é possíve criar metodos de extensao para formularios?

por exemplo, quero criar um metodo de extensao semelhante ao form.Show() porém, quero que esse método verifique se o form esta aberto ou nao.

cheguei a criar esse método
  public void ShowOrFocus(Type frmType)
{
foreach (Form form in Application.OpenForms)
{
if (form.GetType().Equals(frmType))
{
form.Focus();
return;
}
}
Form frmNovo = (Form)Activator.CreateInstance(frmType);
frmNovo.Show();
}


e chamo assim:
  ShowOrFocus(typeof(frmClientes)); 


esse método impede de ter que instanciar o formulario para testar se existe.. ele compara o tipo e se existir cria a instancia.
entao gostaria de transforma em método de extensao para facilitar a utilizacao

KERPLUNK 06/07/2016 17:57:24
#464573
Um método de extensão, é como o próprio nome diz, um método que estende algum objeto. Um formulário pode sim conter métodos de extensão, mas para acessá-los, você teria instanciar o formulário. Pelo que entendi, você quer uma maneira de não instanciar o formulário quando já existir uma instância do mesmo, mas sim simplesmente dar o foco à ele, é isso?
MICHAELL 06/07/2016 18:09:30
#464574
isso mesmo.. exatamente isso Kerplunk

Acredito que seria um método de extensao interessante para utilizacao em todo o sistema.

KERPLUNK 06/07/2016 18:49:18
#464577
Resposta escolhida
Você entendeu a parte que diz [Ô]...mas para acessá-los, você teria instanciar o formulário...[Ô]? O que quis dizer é que para fazer isso não vai ter como ser com um método de extensão. Imagine a situação:
Você tem uma gaveta chaveada. A chave, está dentro dela e o que você quer é pegar a chave de dentro da gaveta...
Para fazer o que você quer, provavelmente seria uma classe estática com um método estático e não um método de extensão.
MICHAELL 07/07/2016 16:29:22
#464617
verdade... obrigado pela ajuda..
vou fazer isso
Tópico encerrado , respostas não são mais permitidas