Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ich bin mir mehr.

[Resolvido] Função para abrir Windows Form em C#

Recommended Posts

Ola pessoal.

 

Estou precisando criar um função para abrir os meus forms. Por exemplo, eu tenho chamo a função passando como paramentro o nome do form "call abreForm("frm_principal");" e a função abre o form frm_principal.

Tentei varias opções mas nada deu certo.

 

Alguém tem alguma idéia de como fazer isso??

 

 

Desde ja muito obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro colega,

 

Para abrir um form no Windows Forms, visto que estamos em um arquitetura de programação orientada a objetos (http://msdn.microsoft.com/pt-br/library/cc580626.aspx), você precisará instanciar o objeto form que você quer que seja aberto. ex.:

 

frm_principal objeto_com_nome_qualquer = new frm_principal();

ou VB:

 

Dim objeto_com_nome_qualquer As new frm_principal()

Após instanciar o objeto, você pode chamar um método referente ao mesmo, no caso para abrir, o método Show(). ex.:

 

objeto_com_nome_qualquer.Show();

ou VB:

 

objeto_com_nome_qualquer.Show()

Espero ter ajudado.

 

Att,

 

Paulo R. Pereira

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo,

 

Dessa forma eu consigo, mas eu gostaria que a função instanciase o objeto pra mim. É que no meu programa vai funcionar assim. O usuário digita, em um campo texto, o nome da tela que ele quer acessar, eu busco no BD qual o form para essa tela e passo o nome do form para a minha função, dai ela iria instanciar e abrir esse form para mim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer assim:

Form formulario = Activator.CreateInstance("WindowsFormsApplication4", "WindowsFormsApplication4.Form2").Unwrap() as Form;
formulario.Show();

Ali você só precisa trocar pelo nome do seu assembly e pelo nome da sua classe + namespace.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oenning,

 

Mas desta forma eu ainda precisaria saber o nome do form, no caso Form2. Eu tava pensando em uma função assim:

 

//Passo o nome do form em uma variavel
Call showForm("Form2");

public void showForm(string showForm)
{
   //Aqui está o meu problema. Quero instanciar o form que eu passei pelo parâmentro.
  // Tentei criar uma variavel do tipo System.Windos.Forms.Form e passei o "Form2" no atributo Name, mas quando do o .Show(), ele cria um form novo e abre esse novo.
}

Alguem tem alguma ideia de como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brother, não entendi sua dúvida quanto ao código do Oenning.

 

Pra qualquer caso você deve saber o nome da classe do formulário.

 

Se todos os forms forem do mesmo assembly, você poderá deixar fixo o nome do assembly e do namespace, e só concatenar o nome da classe do Form. E nesse caso, o código do Oenning irá resolver.

 

A não ser que você queira algum comportamento diferente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.