COMO CRIAR INSTANCIA DE UM FORM DE OUTRO NAMESPACE
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.
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.
é só o namespace diferente, ou o form está em outro projeto?
o forma está em um projeto diferente...
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.
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
Mas não precisa:
Dim frm As Form = NameSpaceDoProjeto.Classe.Form1
frm.Show()
Dim frm As Form = NameSpaceDoProjeto.Classe.Form1
frm.Show()
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[Ô]))
form = Activator.CreateInstance(Type.GetType([Ô]Namespace.[Ô] & [Ô]NomeDaTela[Ô] & [Ô], NAMESPACE[Ô]))
Bem, é uma maneira estranha, mas resolve. Pelo que entendi, você quer abrir o formulário pelo Nome dele, isso?
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.
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.
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?
Exatamente, abro pelo nome do form...
eu não encontrei outra maneira mais eficiente de fazer isso.
eu não encontrei outra maneira mais eficiente de fazer isso.
Tópico encerrado , respostas não são mais permitidas