Ir para conteúdo

POWERED BY:

Arquivado

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

faael

[Resolvido] Recuperar form através do nome

Recommended Posts

Olá pessoal, boa tarde.

 

Estou tentando abrir um formulário através do nome dele (por exemplo, abrir o formulário "frmCliente", passando somente a string), e até que consegui, através do seguinte método:

 

    Private Function GetFormByName(ByVal formName As String) As Object

        Dim myasm As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()

        Try
            Return myasm.CreateInstance(myasm.GetName.Name.Replace(" ", "_") & "." & formName, True)
        Catch ex As Exception
            Return Nothing
        End Try

    End Function

    Private Sub AbreForm()

        Dim Formulario As Form = GetFormByName("frmCliente")

        If Formulario IsNot Nothing Then

            Formulario.MdiParent = Me
            Formulario.Show()

        End If
    End Sub

Porém, através da função GetFormByName() é gerado apenas uma cópia do objeto, ou seja, "Formulario <> frmCliente", então se eu utilizar em qualquer parte do meu projeto frmCliente.Show(), por exemplo, ele abriria outro formulário. O que eu queria era esse conceito:

 

    Private Sub AbreForm()

        Dim Formulario As Form = frmCliente

        If Formulario IsNot Nothing Then

            Formulario.MdiParent = Me
            Formulario.Show()

        End If
    End Sub

Porém, no código acima eu passei o objeto diretamente.

Seria possivel isso, procurar e retornar o frmCliente através da string "frmCliente"?

 

Não sei se fui claro, mas se precisar eu tento explicar novamente.

Obrigado desde já, abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito, Daniel.

Utilizei da seguinte maneira:

 

    Private Sub AbreForm()

        Dim Formulario As Form = CallByName(MeuProjeto.My.Forms, "frmCliente", CallType.Get)

        If Formulario IsNot Nothing Then

            Formulario.MdiParent = Me
            Formulario.Show()

        End If
    End Sub

Assim ele me retornou o objeto original do formulário.

Muito obrigado, abraço.

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.