Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com formularios MDI


rodrigo defende

Pergunta

Estou usando windows Form com vb.net e to com o seguinte problema:

tenho o form principal MDPrincipal

dele chamo um form MDIChild

Dim frm As New Form2

frm.MdiParent = Me

frm.Show()

nesse form tem uma Label e um botao que chama outro form MDIChild

Dim frmB As New Form3

frmB.MdiParent = Me

frmB.Show()

nesse ultimo tenho uma textbox e um botao. o que eu quero é escrever qualquer coisa na textbox e quando clicar no botao aparece o texto na label do form anterior (frm) mas isso não acontece.

Tenho esse problema tambem se por acaso tenho uma funcao publica em um form e de outro chamo ela - nada acontece.

Porque? O que eu estou deixando de fazer???

já tah me deixando com raiva isso....

Grato a todos

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Ola

esta assim:

form2.label1.text = me.text1.text

isso no botao do form3

É, só que você não pode fazer assim, pelo menos não do jeito que você está criando a janela. Veja que ao fazer...

Dim frm As New Form2
frm.MdiParent = Me
frm.Show()
... você está criando uma nova instância da classe Form2. Essa nova instância está sendo referenciada através do nome "frm", referência esta que por estar dentro de uma sub só vai existir ali dentro. Ou seja, se você fizesse...
frm.Label1.Text = "texto"
... você teria o efeito desejado, porém não vai funcionar porque o "frm" é variável local da rotina. Então, algumas possíveis soluções são: 1) usar as instâncias padrões dos forms, sem criar novas; 2) passar a referência de uma janela para outra. A primeira solução é a mais simples, ou seja, ao invés de usar...
Dim frm As New Form2
frm.MdiParent = Me
frm.Show()
... você vai usar o seguinte para abrir a janela:
Form2.MdiParent = Me
Form2.Show()
O mesmo será feito para abrir o Form3 a partir do Form2:
Form3.MdiParent = Me.MdiParent
Form3.Show()
Depois, o código que entrará botão do Form3 para preencher a label do Form2 será apenas:
Form2.Label1.Text = Me.TextBox1.Text
E pronto, vai funcionar como você quer. Porém, o problema desse modo é que você não tem como abrir várias janelas do Form2 e várias do Form3, uma vez que não estará criando instâncias, e sim usando a instância padrão da classe. Já a segunda maneira permitirá isso, então a primeira coisa a se fazer é criar uma campo público na classe Form3:
Public SegundoForm As Form2
Daí, o código para abrir o Form2 a partir do MDI será o mesmo do seu primeiro post. A diferença será no código que abre um Form3 a partir de um Form2:
Dim j As New Form3()

j.MdiParent = Me.MdiParent
j.SegundoForm = Me
j.Show()
Note que ali preenchemos o campo público "SegundoForm" da instância. Com isso, no Form3, o botão que preencherá a label terá o seguinte:
SegundoForm.Label1.Text = Me.TextBox1.Text

E pronto! Agora você pode ter múltiplas instâncias de ambos os forms e ainda assim continuar preenchendo a label a partir de outra janela.

Certo? ;)

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Muito legal mesmo a sua resposta - ajudou pacas.

Agora uma coisa que eu não testei mas gostaria de perguntar: da maneira que você indicou pra abrir as janelas, suponha que no form2 eu tenho uma sub publica. no form3 eu conseguiria acionar ela? lembrando que essa sub tem instrucoes para atualizar uma datagridview que esta no form 2.

Sera que pode dar certo?

Grato de novo

Link para o comentário
Compartilhar em outros sites

  • 0
Muito legal mesmo a sua resposta - ajudou pacas.

Agora uma coisa que eu não testei mas gostaria de perguntar: da maneira que você indicou pra abrir as janelas, suponha que no form2 eu tenho uma sub publica. no form3 eu conseguiria acionar ela? lembrando que essa sub tem instrucoes para atualizar uma datagridview que esta no form 2.

Sera que pode dar certo?

Grato de novo

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Marcelo Duraes
Estou usando windows Form com vb.net e to com o seguinte problema:

tenho o form principal MDPrincipal

dele chamo um form MDIChild

Dim frm As New Form2

frm.MdiParent = Me

frm.Show()

nesse form tem uma Label e um botao que chama outro form MDIChild

Dim frmB As New Form3

frmB.MdiParent = Me

frmB.Show()

nesse ultimo tenho uma textbox e um botao. o que eu quero é escrever qualquer coisa na textbox e quando clicar no botao aparece o texto na label do form anterior (frm) mas isso não acontece.

Tenho esse problema tambem se por acaso tenho uma funcao publica em um form e de outro chamo ela - nada acontece.

Porque? O que eu estou deixando de fazer???

já tah me deixando com raiva isso....

Grato a todos

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...