Boa noite,
Explicando a dúvida e expondo a situação:
- Tenho o Form1;
- Dentro dele tenho vários UserControl;
- Para cada botão no form, Tenho um método para chamar o UserControl especifico simples uc.dock = dockstyle.fill + uc.bringtofront();
- Em cada botão executo uma metodo que está em uma classe statica de nível de acesso do usuário;
- Esse metodo retorna bool;
- Com o resultado do bool, faço uma condição que se tru, executo a etapa 3 com o UC de bloqueio
------------------ Até aqui tudo beleza -------------------------
O que acontece que dentro das user control, tenho alguns pontos específicos que preciso tratar o usuário novamente, e eu não quero por uma ucBloqueio dentro de cada outra UserControl, pq o sistema vai ficar cheio de UC para cara tela que preciso bloquear....
Por fim, o que preciso é que no metodo 4 (da lista acima) eu consiga ja fazer o bringtofront da UC de bloqueio no Form1...
o que eu já tentei:
// o Form
public partial class Form1 : Form
{
...
public void TelaBloqueio()
ucBloqueio.BringToFront();
ucBloqueio.Dock = DockStyle.Fill;
}
// A Classe de validação
Public class Valida {
public static bool ValidaUsuario(int nivel)
{
switch(nivel)
{
case 1:
Form form = Application.OpenForms["Form1"];
form.Control.Find("ucBloqueio",true)[0].BringToFront();
return true;
case 2:
return false;
default:
return false;
}
}
}
// O Metodo dentro de um UserControl que valida o usuario, se cair em 1 bloqueia a tela com o ucBloqueio
Public partial class uc1 : UserControl {
private void TestaUsuario(int nivel)
{
Valida.ValidaUsuario(nivel)
}
}
Tentei tbm fazendo o método dentro da Form1 sendo statico, mas não tive sucesso pois o ucBloqueio já esta inserido dentro do form, e não é instanciado....
Se alguém tiver alguma sugestão, muito obrigado.