MAPEAMENTO DE FORMS

NALDOXD 23/03/2012 09:50:02
#398029
Bom dia a todos,
Eu gostaria de saber se é possivel realizar um mapeamento de todos os forms do meu programa C# (Trabalho com mais de um Assembly) para poder estar criando uma tela de permissões, resumindo, queria mapiar todos os nomes dos formularios vamos supor que FCadastraProduto e FCadastraCliente, gostaria que toda vez que minha aplicação fosse iniciada ela varre-se o sistema e detecta-se sosinha se há um novo formulario além dos FCadastraProduto e FCadastraCliente será que é possivel ?
KERPLUNK 23/03/2012 10:03:29
#398034
Resposta escolhida
é possível, mas com certeza não é a maneira correta de se fazer permissão de acesso. Esse tipo de coisa não se faz pelo nome do form e sim pela operação, que deve ocorrer em outro local que não no form e nesse outro local sim, fazer a validação de permissão.
NALDOXD 23/03/2012 10:11:47
#398036
Sim correto, ele tera sua própia class de permissões.

Os analistas entederam que é mais interessante liberar o formulario para o usuário do que liberar por ações (gravar, consultar, alterar e excluir) eu quero apenas no inicio a aplicação varrer os forms e gravar no banco os nomes dos novos forms para evitar que algum [ô]estágiario[ô] esqueça de lançar o nome de um form novo no banco de dados, depois de ter obtido o nome do novo form o Administrador vai definir qual grupo pode abrir/manipular aquele form isso é um metódo/class separado apenas para permissão, ai na chamada do form vou apenas fazer uma verificação:

if (permissao == true)
{
}

Compreende minha idéia? Só que não conheço nenhum código ou modo de fazer isso, se você poder estar me auxliando ficaria muito, mas muito grato pois já estou com está parte de permissões meio que atrasada.
KERPLUNK 23/03/2012 10:17:01
#398038
Tente assim:

Type[] AllTypesInProjects = Assembly.GetExecutingAssembly().GetTypes();
for(int i=0;i<AllTypesInProjects.Length;i++)
{
if (AllTypesInProjects[i].BaseType == typeof(Form))
{
/* Convert Type to Object */
Form f = (Form)Activator.CreateInstance(AllTypesInProjects[i]);
string FormText =f.Text;

listBox1.Items.Add(FormText);
}

}


Veja que na linha listBox1.Items.Add(FormText); estou adicionando o form à uma listbox, mas você pode fazer alguma outra operação com ele, se quiser...
NALDOXD 23/03/2012 10:21:55
#398041
Ok, vou testar em uma aplicação teste e ja lhe dou um retorno, provavelmente iremos usar uma grid com lookup
NALDOXD 23/03/2012 17:58:12
#398116
Cara deu certo, muito obrigado!
Tópico encerrado , respostas não são mais permitidas