Aceder a instâncias de forms criadas durante C#

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:
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);
 
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.
 
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.
 
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:
Back
Topo