C# 禁用ToolStripMenuItem与禁用MenuStrip.Item

C# 禁用ToolStripMenuItem与禁用MenuStrip.Item,c#,.net,winforms,menustrip,C#,.net,Winforms,Menustrip,当用户登录到我的应用程序时,我不希望每个用户都看到一些菜单项。因此,我想禁用或使菜单项不可见。例如,fileToolStripMenuItem是我的menuStrip中的第一项,当我尝试: fileToolStripMenuItem.Enabled=false-这不起作用 menuStrip.Items[0]。Enabled=false-这确实有效 有人能告诉我这里的区别吗 此外,我希望能够禁用其中一个菜单项的下拉项,但我也不能这样做 代码如下: public Form1() {

当用户登录到我的应用程序时,我不希望每个用户都看到一些菜单项。因此,我想禁用或使菜单项不可见。例如,
fileToolStripMenuItem
是我的
menuStrip
中的第一项,当我尝试:


fileToolStripMenuItem.Enabled=false-这不起作用
menuStrip.Items[0]。Enabled=false-这确实有效

有人能告诉我这里的区别吗

此外,我希望能够禁用其中一个菜单项的下拉项,但我也不能这样做

代码如下:

public Form1()
        {
            InitializeComponent();

            // bunch of other code here

            if (!login.ValidatedUser)
            {
                menuStrip1.Items[0].Visible = false; // this works
                toolsToolStripMenuItem.Visible = false; // this does not
                btnStartResourceManager.Enabled = false;
                listAvailableSizes.Enabled = true;
                panelPicSet.Enabled = true;
            }
        }

使用菜单项的特定名称并更改其Visible属性。i、 e

 private void toggleToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (shown)
            saveToolStripMenuItem.Visible = false;
        else
            saveToolStripMenuItem.Visible = true;
        shown = !shown;
    }

使用菜单项的特定名称并更改其Visible属性。i、 e

 private void toggleToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (shown)
            saveToolStripMenuItem.Visible = false;
        else
            saveToolStripMenuItem.Visible = true;
        shown = !shown;
    }

fileToolStripMenuItem.Enabled=false按预期工作。我认为您在初始化组件()之前试图禁用它;打电话


fileToolStripMenuItem.Enabled=false按预期工作。我认为您在初始化组件()之前试图禁用它;打电话


对于子项,只需右键单击该项,并在“属性”窗口的“设计”部分中查看其名称。在我下面的例子中
addNewToolStripMenuItem1

public Form()   
    {
        InitializeComponent();
        menuStrip1.Items[1].Visible = false; // For Main Item // Bold Letters
        addNewToolStripMenuItem1.Visible = false; //For Sub Items         
    }

对于子项,只需右键单击该项,并在“属性”窗口的“设计”部分中查看其名称。在我下面的例子中
addNewToolStripMenuItem1

public Form()   
    {
        InitializeComponent();
        menuStrip1.Items[1].Visible = false; // For Main Item // Bold Letters
        addNewToolStripMenuItem1.Visible = false; //For Sub Items         
    }

谢谢你的回复,但正如我在帖子中所说的那样,这是行不通的。只有当我说
menuStrip.Items[0].Visible=false时,它才起作用我需要知道为什么以及如何解决这个问题。谢谢你的回复,但正如我在帖子中所说的那样,这不起作用。只有当我说
menuStrip.Items[0].Visible=false时,它才起作用我需要知道为什么以及如何解决这个问题。好吧,我明白了,但你的代码中仍然存在一些错误。您能否从设计器生成的代码中添加代码?menustrip及其项是如何初始化的?您使用的是哪个版本的框架?.NET framework是4.0.30319版本。它将在Wow中发布设计器代码。我很高兴你让我看了一下设计器代码。很明显,我做了一些傻事,不知怎的,我把所有的菜单项都做了鬼拷贝,最后加上了1。例如,
fileToolStripMenuItem1
而不是
fileToolStripMenuItem
。现在我引用了正确的项目,一切都很好。真不敢相信我在这上面浪费了一个小时。。。不过谢谢。:)是的,我知道,有时候问题的解决方案比看起来要简单得多。好的,我明白了,但代码中仍然有一些错误。您能否从设计器生成的代码中添加代码?menustrip及其项是如何初始化的?您使用的是哪个版本的框架?.NET framework是4.0.30319版本。它将在Wow中发布设计器代码。我很高兴你让我看了一下设计器代码。很明显,我做了一些傻事,不知怎的,我把所有的菜单项都做了鬼拷贝,最后加上了1。例如,
fileToolStripMenuItem1
而不是
fileToolStripMenuItem
。现在我引用了正确的项目,一切都很好。真不敢相信我在这上面浪费了一个小时。。。谢谢。:)是的,我知道,有时候问题的解决比看起来要简单得多。