Usuário com melhor resposta
Criar uma instância a partir de um parametro

Pergunta
-
Olá Pessoal, podem me ajudar?
Quero instanciar uma classe de um form cujo nome será passado como parâmetro através de uma variável string. Por exemplo:
dim frmFormulario as new varFormulário
frmFormulario.Show
* Onde varFormulario é uma variável string cujo conteúdo é o nome do formulário. O formulário já foi criado e existe, porém neste caso o formulário a ser aberto pode ser qualquer um dos cem formulários existentes no projeto, basta que eu passe o nome dele dentro da variável varFormulário.
Tem como fazer isso?
Grato pela ajuda,
Altair.
Respostas
-
Tem !!!
Assim
C#
object frm = Activator.CreateInstance(Type.GetType("WindowsFormsApp.Form2")); if (frm != null && frm is Form) { ((Form)frm).ShowDialog(); }
VB.Net
Dim frm As Object = Activator.CreateInstance(Type.GetType("WindowsFormsApp.Form2")) If Not IsNothing(frm) AndAlso TypeOf frm Is Form Then DirectCast(frm, Form).ShowDialog() End If
Explicando dentro Type.GetType o WindowsFormsApp é o nome do projeto e o Form2 o nome do Form, então adeque ao seu projeto isso ai para funcionar !!!
- Sugerido como Resposta Fulvio Cezar Canducci Dias sexta-feira, 28 de fevereiro de 2014 00:22
- Marcado como Resposta Daxxel sexta-feira, 28 de fevereiro de 2014 13:15
Todas as Respostas
-
Tem !!!
Assim
C#
object frm = Activator.CreateInstance(Type.GetType("WindowsFormsApp.Form2")); if (frm != null && frm is Form) { ((Form)frm).ShowDialog(); }
VB.Net
Dim frm As Object = Activator.CreateInstance(Type.GetType("WindowsFormsApp.Form2")) If Not IsNothing(frm) AndAlso TypeOf frm Is Form Then DirectCast(frm, Form).ShowDialog() End If
Explicando dentro Type.GetType o WindowsFormsApp é o nome do projeto e o Form2 o nome do Form, então adeque ao seu projeto isso ai para funcionar !!!
- Sugerido como Resposta Fulvio Cezar Canducci Dias sexta-feira, 28 de fevereiro de 2014 00:22
- Marcado como Resposta Daxxel sexta-feira, 28 de fevereiro de 2014 13:15
-
Tem !!!
Assim
C#
object frm = Activator.CreateInstance(Type.GetType("WindowsFormsApp.Form2")); if (frm != null && frm is Form) { ((Form)frm).ShowDialog(); }
VB.Net
Dim frm As Object = Activator.CreateInstance(Type.GetType("WindowsFormsApp.Form2")) If Not IsNothing(frm) AndAlso TypeOf frm Is Form Then DirectCast(frm, Form).ShowDialog() End If
Explicando dentro Type.GetType o WindowsFormsApp é o nome do projeto e o Form2 o nome do Form, então adeque ao seu projeto isso ai para funcionar !!!
Dim frm As Object = Activator.CreateInstance(Type.GetType("WindowsFormsApp." & "Nome_Do_Form")) If (frm IsNot Nothing) AndAlso (TypeOf frm Is Formulario) Then DirectCast(frm, Form).ShowDialog() End If
Herbert Lausmann
-
-
Caro Flávio não funcionou está dando o seguinte erro:
"Valor não pode ser nulo. Nome do parâmetro: type"
veja o meu código
Dim frm As Object = Activator.CreateInstance(Type.GetType("APISDev" & vFormularioHelp))
If Not IsNothing(frm) AndAlso TypeOf frm Is Form Then
DirectCast(frm, Form).ShowDialog()
End Ifonde APISDev é o nome do projeto e vFormularioHelp é a variável string que contem o nome do formulário que será aberto.
Grato.
-
-
Caro Flávio não funcionou está dando o seguinte erro:
"Valor não pode ser nulo. Nome do parâmetro: type"
veja o meu código
Dim frm As Object = Activator.CreateInstance(Type.GetType("APISDev" & vFormularioHelp))
If Not IsNothing(frm) AndAlso TypeOf frm Is Form Then
DirectCast(frm, Form).ShowDialog()
End Ifonde APISDev é o nome do projeto e vFormularioHelp é a variável string que contem o nome do formulário que será aberto.
Grato.
-