MAPEAMENTO DE FORMS
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 ?
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 ?
é 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.
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.
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.
Tente assim:
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...
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...
Ok, vou testar em uma aplicação teste e ja lhe dou um retorno, provavelmente iremos usar uma grid com lookup
Cara deu certo, muito obrigado!
Tópico encerrado , respostas não são mais permitidas