1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Aceder a instâncias de forms criadas durante C#

Discussão em 'Programação' iniciada por Neojag, 16 de Abril de 2009. (Respostas: 4; Visualizações: 1873)

  1. Neojag

    Neojag Power Member

    Viva!
    Numa aplicação em C# com windows forms (VS2008) preciso de aceder a alguns objectos declarados na classe de um Form que é criado por outra função. A título de exemplo, tenho uma função que cria um form e faz display do mesmo:

    Código:
            private void button1_Click(object sender, EventArgs e)
            {
                SecondaryForm secondaryForm = new SecondaryForm();
                secondaryForm.Show();  
            }
    
    E precisava de ter acesso a objectos na instância da classe criada (secondaryForm) a partir de outra função (da classe da mesma form onde foi criada a secondaryForm) devidamente declarados como públicos:

    Código:
    
            private void button2_Click(object sender, EventArgs e)
            {
    
             secondaryForm.variavel = "meh";
    
            }
    
    
    Isto não compila porque o compilador não reconhece a instância secondaryForm (o que até faz sentido, dado que é criada durante runtime e ele não sabe se vai ser criada ou não). Já tentei declararo secondaryForm no construtor do form principal e fazer só o show() na função, mas nem assim reconhece. Alguma ideia sobre a melhor maneira como fazer isto?

    Danke!

    Edit: O tópico era "...durante a execução em C#" e não "durante C#" :P
     
    Última edição: 16 de Abril de 2009
  2. i0no

    i0no Power Member

    Podes ter algo deste genero:

    Na Form1

    metes isto: public static tipo variavel;

    e depois na Form2

    Form1 formprincipal = new Form1();
    MessageBox.Show(formprincipal.variavel);
     
  3. Neojag

    Neojag Power Member

    Não resolve o meu problema ;) O meu problema tem a ver com aceder, num método, a forms criados durante a execução por outro método. O compilador não reconhece a instância se esta for criada num outro form.
     
  4. i0no

    i0no Power Member

    Pelo que vi no teu exemplo, tu queres aceder a variáveis declaradas em outras forms. O exemplo que te dei faz isso, se quiseres posso criar uma pequena aplicação para veres.
     
  5. Neojag

    Neojag Power Member

    Certo, mas no teu exemplo tu crias a form e acedes imediatamente a um objecto dela, dentro do mesmo método. Eu preciso de criar a form durante um método mas aceder aos objectos dela a partir de outros métodos. No entanto, o compilador não me deixa compilar código que faça isto porque diz que a instância a que eu estou a tentar aceder (que foi criada noutro método) não existe neste contexto.

    Edit: er, esquece, estou burro, não me estava a lembrar que objectos definidos dentro de uma função saem do scope das outras, basta declarar a instância do form dentro da classe mas fora de qualquer função.

    Já agora, para fazer os forms novos que abro operar sobre o form principal tem um método nos forms secundários que recebe um argumento que é o "this" do form principal. Alguém sabe o nome da instância do primeiro form que é criado com Application.Run()?
     
    Última edição: 16 de Abril de 2009

Partilhar esta Página