LISTAR FORMULARIOS DO PROJETO

FOXMAN 23/08/2011 18:43:27
#382354
Salve, Salve pessoal....

Estou retomando os estudos em C#, e as vezes me pego em pequenos detalhes que parece até ridículo....

Bem neste caso não estou conseguindo uma simples coisas(simples para quem desenvolve em vb.net).

Em VB.NET para eu carregar em uma variável, todos os formulários do projeto basta eu fazer assim :

Dim frms As Object
frms = My.Forms


Este código, carrega os formularios do projeto na variável frms conforme imagem abaixo.




A pergunta é :

Como proceder desse mesmo modo em C#.

Desde já agradeço...





PAVILLION 23/08/2011 19:30:54
#382362
Resposta escolhida
Foxman...

Como o Ocelot disse, não tem algo parecido no C#...
Mas dá para fazer..
Eu faço assim:

  

List<Form> myForms = new List<Form>();

Assembly asm = Assembly.GetExecutingAssembly();
Type[] types = asm.GetTypes();

for (int i = 0; i < types.Length; i++)
{
if (types[i].IsPublic && types[i].BaseType == typeof(Form))
{
myForms.Add((Form)asm.CreateInstance(types[i].FullName));
}
}

foreach (Form myForm in myForms)
{
MessageBox.Show(myForm.ToString());
}



Não sei se é o melhor modo, mas funciona...
FOXMAN 23/08/2011 19:35:27
#382363
Pavillion, vou testar aqui, mas acredito que não vá funcionar, pois eu preciso de todas as propriedades e objetos dos forms relacionados.....
FOXMAN 23/08/2011 21:42:17
#382372
Citação:

:
Pavillion, vou testar aqui, mas acredito que não vá funcionar, pois eu preciso de todas as propriedades e objetos dos forms relacionados.....



Quando o cidadão é CRU, fala coisa que não sabe neh.....rsrsrsrsrs

Citação:

:
Foxman...

Como o Ocelot disse, não tem algo parecido no C#...
Mas dá para fazer..
Eu faço assim:

  

List<Form> myForms = new List<Form>();

Assembly asm = Assembly.GetExecutingAssembly();
Type[] types = asm.GetTypes();

for (int i = 0; i < types.Length; i++)
{
if (types[i].IsPublic && types[i].BaseType == typeof(Form))
{
myForms.Add((Form)asm.CreateInstance(types[i].FullName));
}
}

foreach (Form myForm in myForms)
{
MessageBox.Show(myForm.ToString());
}



Não sei se é o melhor modo, mas funciona...



Cara PERFEITO, era isso mesmo que eu queria, peço até desculpa pela opnião antecipada, é que como eu disse estou iniciando.....

O [Ô]BAGAÇO[Ô] ficou tão bom que teriei economizei umas 50 linhas de código....ficou show.....

Valeu mesmo..........



Tópico encerrado , respostas não são mais permitidas