none
Controlar Form Filho apartir de Form Pai MDI RRS feed

  • Pergunta

  • Ola a todos,

    Estou tendo problemas ao passar controles entre formulario Pai MDI e Filho,

    O problema eh o seguinte, eu tenho duas Forms Pai e Filho, os botoes pesquisar salvar e excluir estao no Form Pai, eu gostaria que se clicasse o botao pesquisar do form Pai me mostrasse uma messagebox do texto que estiver na textbox do form filho, ja tentei isso: O quanto insiro algum texto no texbox1 e clico no botao me retorna mensagem vazia, onde estou errando

    private void pesquisarToolStripMenuItem_Click(object sender, EventArgs e)
            {
                FormFilho = new frmFilho();
    
                MessageBox.Show(FormFilho.textbox1.Text);
            }                                                                                                       
    segunda-feira, 28 de novembro de 2016 07:59

Respostas

  • Você precisa usar a mesma instância que utilizou para exibir o formulário filho. Do jeito que você fez, está criando um objeto totalmente independente do anterior.

    Portanto, crie uma variável no nível de sua classe e quando for abrir o formulário filho, atribua a nova instância a esta variável. No seu event handler pesquisarToolStripMenuItem_Click, utilize esta variável para capturar o valor do TextBox.

    public class FormMdi
    {
        private FormChild formFilho;
    
        public void AbrirFormFilho()
        {
            formFilho = new FormChild();
            formFilho.MdiParent = this;
            formFilho.Show();
        }
    
        private void pesquisarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show(formFilho.AlgumTextBox.Text);
        }
    }
    Obs: Para funcionar a variável/propriedade do TextBox deve ser public ou protected.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    • Marcado como Resposta JosefoSad segunda-feira, 28 de novembro de 2016 11:43
    segunda-feira, 28 de novembro de 2016 10:17

Todas as Respostas

  • Você precisa usar a mesma instância que utilizou para exibir o formulário filho. Do jeito que você fez, está criando um objeto totalmente independente do anterior.

    Portanto, crie uma variável no nível de sua classe e quando for abrir o formulário filho, atribua a nova instância a esta variável. No seu event handler pesquisarToolStripMenuItem_Click, utilize esta variável para capturar o valor do TextBox.

    public class FormMdi
    {
        private FormChild formFilho;
    
        public void AbrirFormFilho()
        {
            formFilho = new FormChild();
            formFilho.MdiParent = this;
            formFilho.Show();
        }
    
        private void pesquisarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show(formFilho.AlgumTextBox.Text);
        }
    }
    Obs: Para funcionar a variável/propriedade do TextBox deve ser public ou protected.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    • Marcado como Resposta JosefoSad segunda-feira, 28 de novembro de 2016 11:43
    segunda-feira, 28 de novembro de 2016 10:17
  • Resolveu o meu problema, 

    Eu estava criando uma nova nova instancia independente por isso nao retornava nada, entao fiz como sugerido utilizei a mesma instancia que usei para mostrar o formulario filho e funcionou sem problemas... muito obrigado.

    segunda-feira, 28 de novembro de 2016 11:48