none
Criar uma instância a partir de um parametro RRS feed

  • 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.

    quinta-feira, 27 de fevereiro de 2014 21:01

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 !!!


    Fulvio Cezar Canducci Dias

    • 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
    sexta-feira, 28 de fevereiro de 2014 00:22

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 !!!


    Fulvio Cezar Canducci Dias

    • 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
    sexta-feira, 28 de fevereiro de 2014 00:22
  • 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 !!!


    Fulvio Cezar Canducci Dias

    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

    Meu BlogMeu perfil no Facebook

    sexta-feira, 28 de fevereiro de 2014 10:31
  • Muito obrigado. Vou Testar.
    sexta-feira, 28 de fevereiro de 2014 13:15
  • 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 If

    onde APISDev é o nome do projeto e vFormularioHelp é a variável string que contem o nome do formulário que será aberto.

    Grato.

    sexta-feira, 28 de fevereiro de 2014 13:27
  • Oi Flávio. Funcionou. Era um erro de sintaxe. Muito obrigado.
    sexta-feira, 28 de fevereiro de 2014 13:41
  • 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 If

    onde APISDev é o nome do projeto e vFormularioHelp é a variável string que contem o nome do formulário que será aberto.

    Grato.

    faltou ponto neh !!! kkkk

    Fulvio Cezar Canducci Dias

    sexta-feira, 28 de fevereiro de 2014 13:53
  • Oi Flávio. Funcionou. Era um erro de sintaxe. Muito obrigado.

    é Fúlvio ...

    Legal parabéns ...


    Fulvio Cezar Canducci Dias

    sexta-feira, 28 de fevereiro de 2014 13:53