none
Preciso desabilitar um item do menu de um outro form RRS feed

  • Pergunta

  • tenho uma tela de login, e atraves dela tenho um IF e dentro dele uma condiçao, caso nao atendida, desabilita um item de um menustrip de outro form quando ele for carregado.............como posso fazer isso?
    quarta-feira, 17 de fevereiro de 2016 01:42

Respostas

  • Ò melhor seria vc criar uma classe e na tela de login, preencher essa classe com algum dado, vou exemplificar, o seu menu sera carregado baseado em nivel de acesso. 

    então : 

    Classe 

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.Sql;
    using System.Data.SqlClient;
    
    namespace Code.DTO
    {
        class DadosLogin
        {
            private static int id;
    
            public int Id
            {
                get { return id; }
                set { id = value; }
            }
    
            private static string nivelacesso;
    
            public string Nivelacesso
            {
                get { return nivelacesso; }
                set { nivelacesso = value; }
            }
           
            private static string nomeusuario;
    
            public string Nomeusuario
            {
                get { return nomeusuario; }
                set { nomeusuario = value; }
            }
    
    
        }
    }

    No seu form de login quando ele verificar o usuario  e senha vc pode carregar o nivel que foi cadasatro ( usuario/ diretoria / master ) ou qq outra coisa te ajude a separar o Usuario A de B. 

    Teu form de login carrega teu form principal no qual esta o seu menu, certo ? 

    No load do teu form Principal vc fara um Switch mais ou menos assim: 

     // CHAMO A CLASSE 
     DadosLogin dton = new DadosLogin();
    
    string NivelUsario = dton.Nivel;
    // a string NivelUusraio recebe o Nivel do usuario que foi cadastrado no banco (login ABC , senha 123 , nivel Diretoria)
    
    label1.text = NivelUsario ;
    
    // aqui se faz a verificação  se for usuario vai carregar ae/sair
    se for diretoria  carrega tudo .
    switch (label1.Text) 
                {
                    case "Usuario":
                        
         this.aeToolStripMenuItem.Visible = true;
         this.sairToolStripMenuItem.Visible = true;
         this.cadUsuáriosToolStripMenuItem.Visible = false;               
         this.emailToolStripMenuItem.Visible = false;
     break;
    
                    case "Diretoria":
         this.aeToolStripMenuItem.Visible = true;
         this.sairToolStripMenuItem.Visible = true;
         this.cadUsuáriosToolStripMenuItem.Visible = true;
         this.emailToolStripMenuItem.Visible = true;
         this.bancosToolStripMenuItem.Visible = true;
    }

    Att, wsti.

    • Marcado como Resposta TiagoJesusTJS quarta-feira, 17 de fevereiro de 2016 08:19
    quarta-feira, 17 de fevereiro de 2016 02:07
  • fiz como no modelo porem nao funcionou, mas graças a sua ideia Wtsi fiz outra coisa que deu certo.

    na validaçao do usuario dentro do form de login passei o Obj para o form principal:

    // passei na chamada do form


                Form m = new frm_00_MenuPrincipal (USU);
                m.Show();
                this.Hide();

    no form principal criei outro inicializador recebendo o Obj e colocando uma condiçao, para mais de 2 tipos de usuario no caso, eu usaria o seu modelo com o Switch.

     UsuarioModel usu_principal;
            
         

            public frm_00_MenuPrincipal(UsuarioModel USU)
            {
                InitializeComponent();

                if (USU.usuPerfil != "Administrador")
                {
                    this.movimentoDoDiaToolStripMenuItem.Enabled = false;
                    this.usuariosToolStripMenuItem.Enabled = false;
                    this.entradaDeProdutosToolStripMenuItem.Enabled = false;
                }

                usu_principal = USU;
            }

    ae deu certo, de qualquer forma merito seu pela ideia, muito obrigado.

    • Marcado como Resposta TiagoJesusTJS quarta-feira, 17 de fevereiro de 2016 08:19
    quarta-feira, 17 de fevereiro de 2016 08:19

Todas as Respostas

  • Ò melhor seria vc criar uma classe e na tela de login, preencher essa classe com algum dado, vou exemplificar, o seu menu sera carregado baseado em nivel de acesso. 

    então : 

    Classe 

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.Sql;
    using System.Data.SqlClient;
    
    namespace Code.DTO
    {
        class DadosLogin
        {
            private static int id;
    
            public int Id
            {
                get { return id; }
                set { id = value; }
            }
    
            private static string nivelacesso;
    
            public string Nivelacesso
            {
                get { return nivelacesso; }
                set { nivelacesso = value; }
            }
           
            private static string nomeusuario;
    
            public string Nomeusuario
            {
                get { return nomeusuario; }
                set { nomeusuario = value; }
            }
    
    
        }
    }

    No seu form de login quando ele verificar o usuario  e senha vc pode carregar o nivel que foi cadasatro ( usuario/ diretoria / master ) ou qq outra coisa te ajude a separar o Usuario A de B. 

    Teu form de login carrega teu form principal no qual esta o seu menu, certo ? 

    No load do teu form Principal vc fara um Switch mais ou menos assim: 

     // CHAMO A CLASSE 
     DadosLogin dton = new DadosLogin();
    
    string NivelUsario = dton.Nivel;
    // a string NivelUusraio recebe o Nivel do usuario que foi cadastrado no banco (login ABC , senha 123 , nivel Diretoria)
    
    label1.text = NivelUsario ;
    
    // aqui se faz a verificação  se for usuario vai carregar ae/sair
    se for diretoria  carrega tudo .
    switch (label1.Text) 
                {
                    case "Usuario":
                        
         this.aeToolStripMenuItem.Visible = true;
         this.sairToolStripMenuItem.Visible = true;
         this.cadUsuáriosToolStripMenuItem.Visible = false;               
         this.emailToolStripMenuItem.Visible = false;
     break;
    
                    case "Diretoria":
         this.aeToolStripMenuItem.Visible = true;
         this.sairToolStripMenuItem.Visible = true;
         this.cadUsuáriosToolStripMenuItem.Visible = true;
         this.emailToolStripMenuItem.Visible = true;
         this.bancosToolStripMenuItem.Visible = true;
    }

    Att, wsti.

    • Marcado como Resposta TiagoJesusTJS quarta-feira, 17 de fevereiro de 2016 08:19
    quarta-feira, 17 de fevereiro de 2016 02:07
  • fiz como no modelo porem nao funcionou, mas graças a sua ideia Wtsi fiz outra coisa que deu certo.

    na validaçao do usuario dentro do form de login passei o Obj para o form principal:

    // passei na chamada do form


                Form m = new frm_00_MenuPrincipal (USU);
                m.Show();
                this.Hide();

    no form principal criei outro inicializador recebendo o Obj e colocando uma condiçao, para mais de 2 tipos de usuario no caso, eu usaria o seu modelo com o Switch.

     UsuarioModel usu_principal;
            
         

            public frm_00_MenuPrincipal(UsuarioModel USU)
            {
                InitializeComponent();

                if (USU.usuPerfil != "Administrador")
                {
                    this.movimentoDoDiaToolStripMenuItem.Enabled = false;
                    this.usuariosToolStripMenuItem.Enabled = false;
                    this.entradaDeProdutosToolStripMenuItem.Enabled = false;
                }

                usu_principal = USU;
            }

    ae deu certo, de qualquer forma merito seu pela ideia, muito obrigado.

    • Marcado como Resposta TiagoJesusTJS quarta-feira, 17 de fevereiro de 2016 08:19
    quarta-feira, 17 de fevereiro de 2016 08:19