COMO CRIAR INSTANCIA DE UM FORM DE OUTRO NAMESPACE

DONCORLEONE 30/07/2012 09:18:17
#406812
Bom dia,
gostaria de saber como e se é possível criar uma instância de um form a partir de um namespace diferente do mesmo...
no caso de serem do mesmo namespace o trecho de código a seguir serviria:
form = Activator.CreateInstance(Type.GetType([Ô]Namespace.[Ô] & [Ô]NomeDaTela[Ô]))

porém, se tento abrir o mesmo form de um namespace que não seja o dele, cai em exception... pois ele não consegue reconhecer o namespace.
alguém já teve esse problema?

desde já agradeço.
KERPLUNK 30/07/2012 09:43:13
#406815
é só o namespace diferente, ou o form está em outro projeto?
DONCORLEONE 30/07/2012 09:50:00
#406817
o forma está em um projeto diferente...
KERPLUNK 30/07/2012 10:03:38
#406818
Neste caso, você tem de incluir a referência do projeto no qual o form que você quer chamar está, no projeto do qual você quer chamar esse form, então pode instanciar o form da maneira usual, especificando o caminho completo da classe do mesmo.
DONCORLEONE 30/07/2012 10:05:22
#406819
Então, as referência foram feitas, tanto que se eu utilizar //Projeto.Form a tela abre normalmente, o que eu não consigo é criar a instância de forma genérica utilizando CreateInstance
KERPLUNK 30/07/2012 10:27:52
#406824
Mas não precisa:
Dim frm As Form = NameSpaceDoProjeto.Classe.Form1
frm.Show()
DONCORLEONE 30/07/2012 10:36:18
#406828
O sentido de fazer dessa maneira é ser genérico... pra não declarar os 420 forms do sistema... eu consegui depois de alguns ttestes resolver o problema.
form = Activator.CreateInstance(Type.GetType([Ô]Namespace.[Ô] & [Ô]NomeDaTela[Ô] & [Ô], NAMESPACE[Ô]))
KERPLUNK 30/07/2012 11:12:37
#406838
Bem, é uma maneira estranha, mas resolve. Pelo que entendi, você quer abrir o formulário pelo Nome dele, isso?
DONCORLEONE 30/07/2012 11:15:27
#406841
Exatamente... pois eu tenho a tela de MDI em um projeto... e os outros módulos do sistema ficam em bibliotecas (dll) diferentes...
dessa maneira minha treeview do MDI é carregada com as dll[ô]s existentes em uma determinada pasta. Quando eu dou um duplo clique,
preciso abrir a tela... e essa foi a unica maneira genérica que eu encontrei. Uma linha para abrir 400+ telas diferentes.
KERPLUNK 30/07/2012 11:20:05
#406844
Entendi. Mesmo assim, abrir pelo nome não é uma boa pedida. Pelo que entendi, você tem alguma listagem que exibe todos os forms já, certo?
DONCORLEONE 30/07/2012 13:29:56
#406857
Exatamente, abro pelo nome do form...
eu não encontrei outra maneira mais eficiente de fazer isso.
Página 1 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas