none
Passar valores para um form já aberto RRS feed

  • Pergunta

  • Boa noite a todos,

    sou iniciante em c# e estou com uma certa dúvida, tenho uma aplicação em que eu gostaria de passar para o form2 um valor atualizado no form1, o código segue abaixo com a explicação:

    /* Código do form1, quero verificar se o form2(matrizz) já está aberto e se estiver aberto, passar os valores atualizados e instanciados no objeto aqui do form1 */
    private void button1_Click(object sender, EventArgs e)
            {
                matrizdeinteiros = new MatrizDeInteiros(int.Parse(txtLinhas.Text), int.Parse(txtColunas.Text));
    
    
                matrizz mtr = new matrizz();
    
    /* Verificar se o form já se encontra aberto e atualizar os valores, nessa parte não estou conseguindo, já procurei na net alguns códigos, porém não consegui implementar :/ */
                if (Application.OpenForms.OfType<matrizz>().Count() > 0)
                {
                    Form teste = Application.OpenForms["matriz"];
                    Label label1 = (Label)teste.Controls["label1"];
                    label1.Text = Convert.ToString(matrizdeinteiros.imprimirMatriz);                    
                }
                else
                {
                    mtr.Show();
                    mtr.Valor = matrizdeinteiros.imprimirMatriz;
                }

    /* Código do form2 onde eu quero que os valores atualizados no form1 apareçam na label aqui */
    
    public partial class matrizz : Form
        {
            public String Valor
            {
                get { return label1.Text; }
                set { label1.Text = value;}
            }
            public matrizz()
            {
                InitializeComponent();
                
            }
    
            private void matrizz_Load(object sender, EventArgs e)
            {
                label1.Text = Valor;
            }
        }

    domingo, 8 de novembro de 2015 01:02

Respostas

  • Boa noite.

    Tu podes deixar o segundo Form como um atributo do primeiro:

    public partial class FormPrincipal : Form
        {
            public matrizz frmMatriz {get; set;}
        }

    Só lembre-se de instanciar/verificar se está instanciado quando for usar o mesmo e deixar os atributos/métodos do Form matrizz como públicos.


    Att., Rafael Simor

    • Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 10:52
    domingo, 8 de novembro de 2015 01:38
  • Assim..

    Tu precisas manter essa referência do segundo Form; tu precisas manter um atributo/variável para poder alterar ou pegar os valores depois.

    Esta foi uma alternativa, mas se tu preferes manter esta instância do Form de outra maneira, faça como achar melhor ou mais fácil de trabalhar, está em tuas mãos. ;)


    Att., Rafael Simor

    • Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 10:52
    domingo, 8 de novembro de 2015 15:45

Todas as Respostas

  • Boa noite.

    Tu podes deixar o segundo Form como um atributo do primeiro:

    public partial class FormPrincipal : Form
        {
            public matrizz frmMatriz {get; set;}
        }

    Só lembre-se de instanciar/verificar se está instanciado quando for usar o mesmo e deixar os atributos/métodos do Form matrizz como públicos.


    Att., Rafael Simor

    • Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 10:52
    domingo, 8 de novembro de 2015 01:38
  • Seria necessário criar os atributos como publicos? fazer os metodos get e set publico não resolvem?

    @edit:

    fiz conforme vc me disse, na classe matrizz somente o matrizz_load está como private

    • Editado WagneRusth domingo, 8 de novembro de 2015 15:42
    domingo, 8 de novembro de 2015 15:32
  • Assim..

    Tu precisas manter essa referência do segundo Form; tu precisas manter um atributo/variável para poder alterar ou pegar os valores depois.

    Esta foi uma alternativa, mas se tu preferes manter esta instância do Form de outra maneira, faça como achar melhor ou mais fácil de trabalhar, está em tuas mãos. ;)


    Att., Rafael Simor

    • Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 10:52
    domingo, 8 de novembro de 2015 15:45