描述:系统分为两种角色,管理员和普通用户。
问题1、winform如何存放登录用户的信息,记录是管理员还是普通用?
问题2、如果管理员登录可以查看人员列表,普通用户看不到人员列表,那么MenuStrip菜单如何隐藏人员列表项。MenuStrip菜单菜单1 | 菜单2 | 人员管理

解决方案 »

  1.   

    1.自己增加一个字段,在这个字段中存放用户的身份信息
    2.每一项都是一个ToolStripItem,使其Visible为false可隐藏。
      

  2.   


    1、是在登录后的主窗体,添加一个属性用来存放用户信息吗?2、每项是一个ToolStripItem,怎么获取对应的ToolStripItem。//ToolStripMenuItem [] tsmi =  msMenu.Items.Find("tsmiUser", true) as ToolStripMenuItem [] ; tsmi 这样是空的。
      

  3.   

    1.你方便访问到的位置,当然,主窗体应该是比较合适的。
    2."tsmiUser"是什么?另外,后面不需要as转换。
      

  4.   


    "tsmiUser"  就是我对MenuStrip菜单 人员管理 项ID的命名。恩,可以了,谢谢 ToolStripItem[] tsmi =  msMenu.Items.Find("tsmiUser", true) ;
     tsmi[0].Visible = false;
      

  5.   

    权限控制的问题数据库的一个字段区别普通用户和管理员前台判断该字段,放到一个静态公共变量里,构建MenuStrip相关项的Visible属性~
      

  6.   


    目前就是不知道该如何存放登录用户的信息。数据库字段区别普通用户和管理员已经做到了。我目前是这么放的:login.cs 登录窗体:
    UserModel user = userBll.GetUserInfo(ReplaceString(name));
                    if (null != user)
                    {
                        if (user.Upwd.Equals(pwd))
                        {
                            Form1 main = new Form1(user); //用户实体
                            main.Owner = this;
                            main.Show();
                            this.Hide();
                        }
                     }
    Form1.cs 窗体
     public Form1(UserModel user)
            {
                InitializeComponent();
                FrmUser = user;            ShowUser(user); //普通用户不显示 人员管理 菜单
             }  private  void ShowUser(UserModel user)
            {
                if (user.Urole == 0)
                {
                    ToolStripItem[] tsmi =  msMenu.Items.Find("tsmiUser", true) ;
                    tsmi[0].Visible = false;
                }
            }       private UserModel frmUser;  //用户实体属性        public UserModel FrmUser
            {
                get { return frmUser; }
                set { frmUser = value; }
            }
      

  7.   


    private static UserModel m_CurrentUser;
    public static UserModel CurrentUser
    {
        get
        {
            return m_CurrentUser;
        }
        set
        {
            m_CurrentUser=value;
        }
    }
      

  8.   

    完善点的,考虑动态menu,根据角色加载
      

  9.   


    那可不可以将用户实体信息放在一个基窗体FormBase中,每个窗体都继承这个FormBase,
    这样能不能实现所有窗体引用FormBase窗体,所有窗体能都能访问到用户实体信息了?