none
DÚVIDA VB.NET | Retorna controle de outro form! RRS feed

  • Pergunta

  • Boa tarde amigos,

    estou com uma dúvida, de como passar um controle para uma variável de outro form.

    Exemplo:

    Tenho um form chamado Cadastro de Cliente, Cadastro de Usuário onde tem algumas alguns controles que desejo retornar para a variável. Na qual eu quero retornar um controle chamado Textbox1 por exemplo.

    Tenho outro form que será global, onde vários outros form irão ter acesso.

    Então, eu declaro uma variável:

    Public QualForm as Form

    Quando o usuário estiver em algum desse formulário (Cadastro de Cliente e usuários), quando clicar no botão, o comando irá mandar o nome do formulário ativo para a variável "QualForm", suponha que seja Cadastro de Cliente. Ou seja:

    QualForm = Frm_Cadastro_de_Cliente

    Caso o usuário esteja no outro formulário, por exemplo no formulário de Cadastro de usuários, seria:

    QualForm = Frm_Cadastro_de_Usuários

    Enfim, minha dúvida seria, como faço pra selecionar um controle através dessa variável desse form, dependendo do form que está na variável, preciso que consigo retornar os controles do form que passei pra variável:

    Tipo isso aqui:

    QualForm.Textbox1.Text = "Meus Controles"

    Que seria o mesmo disso aqui:

    Frm_Cadastro_de_Cliente.Textbox1.Text = "Meus Controles"

    Porém eu quero simplificar o código usando uma variável.

    Alguém pode mim ajudar ?



    • Editado Fepus quarta-feira, 5 de julho de 2017 17:37
    quarta-feira, 5 de julho de 2017 17:35

Respostas

  • Bom dia,

    Conseguir encontrar os controles de um form através da variável.

    Conseguir resolver assim:

    Public FormAtivo as Form

    FormAtivo = Frm_CadastroCliente

    DirectCast(FormAtivo.Controls("Panel17").Controls(PictureBox1), PictureBox).Image = PictureBox1.Image

    Isso só funcionar a onde o controle estiver, por exemplo meu controle PictureBox1 está dentro de 2 painel, chamado painel central e painel secundário: Exemplo:

    DirectCast(FormAtivo.Controls("PainelCentral").Controls("PainelSecundário").Controls(PictureBox1), PictureBox).Image = PictureBox1.Image

    e assim vai, onde seu controle estiver dentro de algum objeto deverá fazer o percusso entre objetos até chegar no controle desejado.

    Se for outro controle, é só mudar algumas coisas, por exemplo uma textbox:

    DirectCast(FormAtivo.Controls("PainelCentral").Controls("PainelSecundário").Controls(TextBox1), TextBox).Text= "Novo Texto"

    Fica a dica aí, caso alguém precise!


    • Editado Fepus quinta-feira, 6 de julho de 2017 13:44
    • Marcado como Resposta Fepus quinta-feira, 6 de julho de 2017 13:45
    quinta-feira, 6 de julho de 2017 13:42

Todas as Respostas

  • Cria uma class para chamar o form

    Module F
        Public form As Form = Form2
    End Module

    assim vc chama apenas a class

          MsgBox(F.form.Text)

    quarta-feira, 5 de julho de 2017 18:46
  • Não deu certo! Tem outra solução ?
    quarta-feira, 5 de julho de 2017 19:00
  • Alguém pode mim ajudar ? Por favor...
    quinta-feira, 6 de julho de 2017 10:33
  • Bom dia, Fepus.

    Tudo bem com você?

    Obrigado por usar o fórum MSDN.

    Essa seria uma questão de "How to/Customização" ou "Break Fix/Erro"?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 6 de julho de 2017 12:28
    Moderador
  • Bom dia,

    Conseguir encontrar os controles de um form através da variável.

    Conseguir resolver assim:

    Public FormAtivo as Form

    FormAtivo = Frm_CadastroCliente

    DirectCast(FormAtivo.Controls("Panel17").Controls(PictureBox1), PictureBox).Image = PictureBox1.Image

    Isso só funcionar a onde o controle estiver, por exemplo meu controle PictureBox1 está dentro de 2 painel, chamado painel central e painel secundário: Exemplo:

    DirectCast(FormAtivo.Controls("PainelCentral").Controls("PainelSecundário").Controls(PictureBox1), PictureBox).Image = PictureBox1.Image

    e assim vai, onde seu controle estiver dentro de algum objeto deverá fazer o percusso entre objetos até chegar no controle desejado.

    Se for outro controle, é só mudar algumas coisas, por exemplo uma textbox:

    DirectCast(FormAtivo.Controls("PainelCentral").Controls("PainelSecundário").Controls(TextBox1), TextBox).Text= "Novo Texto"

    Fica a dica aí, caso alguém precise!


    • Editado Fepus quinta-feira, 6 de julho de 2017 13:44
    • Marcado como Resposta Fepus quinta-feira, 6 de julho de 2017 13:45
    quinta-feira, 6 de julho de 2017 13:42