根据C#中的用户角色禁用ToolStripMenuItem

时间:2018-06-01 11:13:34

标签: c#

我根据记录用户角色禁用某些ToolStripMenuItem会遇到一些问题。

这是我在表单中获取所有按钮的递归方法...

public IEnumerable<Button> Buttons
    {
        get
        {
            List<Button> buttons = new List<Button>();
            foreach (Control ctrl in Form.ActiveForm.Controls)
            {
                Button btn = ctrl as Button;
                if (btn != null)
                {
                    buttons.Add(btn);
                }
            }
            return buttons;
        }
    }

这是检查用户是否具有权限并禁用按钮的方法:

public static void ActiveButtons(string user, MenuStrip menu)
    {
        if (CanNavigate(user))
        {
            foreach(Control c in Form.ActiveForm.Controls)
            {
                if (c.GetType() == typeof(MenuStrip))
                {
                    foreach (ToolStripMenuItem item in menu.Items)
                    {
                        if (item.Name == "novoToolStripMenuItem")
                        {
                            item.Visible = false;
                        }
                        else
                        {
                            item.Visible = true;
                        }
                    }
                }
            }
        }
    }

然后,从Form的Load事件中调用该函数:

Extensions.UserInfo.ActiveButtons(Extensions.UserInfo.CurrentLoggedUser, menuStrip);

但是,当表单加载了无法导航的用户时,MenuStrip项仍然可以点击。

有人可以帮我解决这个问题吗?

由于

0 个答案:

没有答案