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#"
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()?