none
Carregar código externo no programa? RRS feed

  • Pergunta

  • Olá pessoal, eu preciso carregar um "form externo" no programa. Ou seja, ele ficar junto com o executável. Caso ele não esteja ali o programa funciona normalmente, porém sem ele. Como se fosse recurso do programa. Se tiver como fazer isso com códigos e funções eu também preciso. É possível fazer isto? Como posso fazer? Obrigado!
    quinta-feira, 25 de setembro de 2014 00:52

Respostas

  • Se você tiver usando Windows Form, cria um outro projeto do tipo Class Library e adiciona um novo formulário nesse novo projeto.

    No seu projeto Windows Form vai em References e adiciona a a referência do projeto novo.

    Compila o novo projeto.

    E chama o form assim:

      Dim projeto As new ProjetoDLLExemplo.Form1
      projeto.ShowDialog()


    Bruno Ferreira de Souza
    MVP - Microsoft Valuable Professional
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro

    • Marcado como Resposta Free4k sexta-feira, 3 de outubro de 2014 14:11
    sexta-feira, 3 de outubro de 2014 02:29
  • Você pode usar o método Exists da classe File. Faz um if se existir a dll na pasta executa o formulário.

    If File.Exists("suadll.dll") Then
     'Executa o código que chama seu formulário
    End If


    Bruno Ferreira de Souza
    MVP - Microsoft Valuable Professional
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro

    • Marcado como Resposta Free4k sexta-feira, 3 de outubro de 2014 21:20
    sexta-feira, 3 de outubro de 2014 16:16

Todas as Respostas

  • Bom dia,

    Ficou meio confusa sua duvida, você poderia explicar melhor para eu tentar te ajudar?

    Abraço


    Ricardo Cortes Microsoft Contingent Staff

    Esse contedo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support

    quinta-feira, 25 de setembro de 2014 14:50
  • Tipo, por exemplo, salvar um módulo na pasta Bin, porém ele não poderia ter extensão VB, teria que ser DLL File ou outra extensão segura.
    sexta-feira, 26 de setembro de 2014 21:02
  • Pelo que entendi você quer criar uma Class Library (Dll) que contem uma função que retorna um form é isso?
    sábado, 27 de setembro de 2014 12:28
  • Isso mesmo amigo.
    sábado, 27 de setembro de 2014 13:45
  • Cara só não sei se isso é possível criar um form e retornar o mesmo com todas as suas propriedades. tu fez uma boa pergunta, vou dar uma pesquisada.
    quinta-feira, 2 de outubro de 2014 18:00
  • Free4K, se você criar um Projeto, do tipo "Library", e nele criar um form, declarando ele, e todos os componentes dele, como publicos, eles poderão ser abertos pelo EXE.

    Veja que, o Visual Studio declara todos os componentes de um Form no "Form1.Designer.vb". Normalmente ele delcara como "Protected Withevents CONTROL_NAME As System.Windows.Forms.[CONTROL_TYPE]".

    Você pode entrar no arquivo DESIGNER (mande exibir todos os arquivos da solução) e trocar "Protected" por "Public".

    E veja isso: Como Carregar um Assembly em tempo de execução para carregar a DLL após o programa inicia (como você disse que pode ser que a DLL esteja lá ou não - então ela será carregar em RUNTIME apenas).
    quinta-feira, 2 de outubro de 2014 20:02
  • Como se fosse um plugin? Se for é só cria-lo como uma biblioteca, o que é relativamente fácil e pode ser feito com interfaces.

    Dê uma olhada no padrão de projeto Abstract Factory. Ele resolve esse tipo de problema.
    quinta-feira, 2 de outubro de 2014 20:07
  • Se você tiver usando Windows Form, cria um outro projeto do tipo Class Library e adiciona um novo formulário nesse novo projeto.

    No seu projeto Windows Form vai em References e adiciona a a referência do projeto novo.

    Compila o novo projeto.

    E chama o form assim:

      Dim projeto As new ProjetoDLLExemplo.Form1
      projeto.ShowDialog()


    Bruno Ferreira de Souza
    MVP - Microsoft Valuable Professional
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro

    • Marcado como Resposta Free4k sexta-feira, 3 de outubro de 2014 14:11
    sexta-feira, 3 de outubro de 2014 02:29
  • Mas daí ele vai aparecer na pasta Debug?
    sexta-feira, 3 de outubro de 2014 02:31
  • Automaticamente quando você referencia outro projeto da solução a propriedade da referência fica como Copy Local = True. Dessa forma ele copia para a pasta bin. Faz o teste e responde se é isso que queria.

    Bruno Ferreira de Souza
    MVP - Microsoft Valuable Professional
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro


    sexta-feira, 3 de outubro de 2014 02:50
  • Funcionou, obrigado. Uma outra dúvida: como faço para que se eu apagar da pasta Debug ele não der erro ao executar a DLL, no lugar do erro aparecer uma mensagem pedindo a instalação do mesmo? Obrigado!
    sexta-feira, 3 de outubro de 2014 14:14
  • Você pode usar o método Exists da classe File. Faz um if se existir a dll na pasta executa o formulário.

    If File.Exists("suadll.dll") Then
     'Executa o código que chama seu formulário
    End If


    Bruno Ferreira de Souza
    MVP - Microsoft Valuable Professional
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro

    • Marcado como Resposta Free4k sexta-feira, 3 de outubro de 2014 21:20
    sexta-feira, 3 de outubro de 2014 16:16
  • Obrigado amigo!
    sexta-feira, 3 de outubro de 2014 21:20
  • Olá. No Visual Studio ele apareceu a mensagem certinho, porém fora do Visual Studio dá erro.

    Imagem do erro: http://snap.ashampoo.com/A2Rg1CPB


    • Editado Free4k sexta-feira, 3 de outubro de 2014 23:10
    sexta-feira, 3 de outubro de 2014 23:09