如何禁用菜单项?

5

我有一个与 Menu 相关的问题。我在 asp.net 中添加了一个 MenuItem。我使用 c#。我想根据用户权限禁用菜单的 父项和子项

有 3 个用户,分别是 "User"、"Power-User" 和 "BT_User"。"User" 的权限最低,"BT_User" 的权限最高。

我该怎么做?有人可以回答我吗?

3个回答

4

从这里开始实现您的逻辑...

(Implemente拼写错误,已更正)
       if(UserType == "Power-User")
        {
        MenuItem mnuItem = Menu1.FindItem("MenuOption"); // If delete a specific item

         //to remove
         Menu1.Items.Remove(mnuItem);
         //to disable and not remove 
         mnuItem.Enabled = false;
        }
        if (UserType == "BT_User")
      { 
       Your other logic
      }

1
尝试这个。
        if (UserType == "Power-User")
            {
                Menu1.Items.Find("MenuToDelete1", true)[0].Enabled = false;
                Menu1.Items.Find("MenuToDelete2", true)[0].Enabled = false;

                //or

                Menu1.Items.Remove(Menu1.FindItem("MenuToDelete"));
                Menu1.Items.Remove(Menu1.FindItem("MenuToDelete2"));
            }
            if (UserType == "BT_User")
            {
                Menu1.Items.Find("DeletedItem1", true)[0].Enabled = true;
                Menu1.Items.Find("DeletedItem2", true)[0].Enabled = true;

                MenuItem item1 = new MenuItem();
                item.Text = "DeletedItem1";
                MenuItem item2 = new MenuItem();
                item.Text = "DeletedItem2";

                //or
                menuStrip1.Items.Insert(index1, item1);
                menuStrip1.Items.Insert(index2, item2);
            }

"Menu1.Items.Find" 和 "Menu1.Items.Insert" 对我不起作用。 - user2475740

0
只需利用MenuItemEnabled属性即可。没有足够的信息告诉您如何构建其周围的逻辑,但是当您想要禁用一个时,只需执行以下操作:
menuItem.Enabled = false;

这里需要注意的一点是,当你禁用一个父元素时,你不需要继续禁用任何子元素,因为当 Enabled 设置为 false 后,任何子菜单都将无法弹出。
MSDN 文档 中可以看到关于 Enabled 属性的说明:

获取或设置一个值,该值指示 MenuItem 对象是否启用,从而允许该项显示弹出图像和任何子菜单项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接