C# 对控件对象使用字符串

C# 对控件对象使用字符串,c#,.net,winforms,C#,.net,Winforms,对于我当前的项目,我用“menuStrip”和几个“ToolStripMenuItem”制作了一个MDIform。 一对按钮和一个devexpress“NavbarControl” 其目的是用户使用用户ID登录 应用程序将获得特定“控件”的数据行 在这一行中为布尔值,如果为真,则该项必须可见,否则该项必须不可见 Datarow还包含项的名称 因此,我使用: this.Controls[item].Visible = true; item=字符串(项目名称) 如果我用它来隐藏menustrip本

对于我当前的项目,我用“menuStrip”和几个“ToolStripMenuItem”制作了一个MDIform。 一对按钮和一个devexpress“NavbarControl”

其目的是用户使用用户ID登录 应用程序将获得特定“控件”的数据行 在这一行中为布尔值,如果为真,则该项必须可见,否则该项必须不可见

Datarow还包含项的名称

因此,我使用:

this.Controls[item].Visible = true;
item=字符串(项目名称)

如果我用它来隐藏menustrip本身,它就会工作 如果我在menuspitems上尝试它,它会给出一个空引用异常

如何仅通过项目名称控制菜单中的项目???

代码:


MenuStrip控件有自己的集合。因此,要引用菜单条项,请引用menustrip父项中的项:

if (this.menuStrip1.Items.ContainsKey(item))
  this.menuStrip1.Items[item].Visible = true;

我已经解决了这个问题:

我在
foreach
循环中创建了一个
foreach
循环,其中 每个循环查找项目的名称,然后查找上一个项目中的项目名称。 如果名称与给定名称匹配,则将可见性设置为true

这是针对2个级别,我创建了另外两个
foreach
循环,以便更深入(初始)到菜单中的4个级别的项目


也许这不是正确/最快的方法,但它的工作原理应该是这样的

oke,但a在DevXPress NavBarControl中也有一些按钮和项目,a希望隐藏这些按钮和项目way@BramVdeventer不熟悉NavBarControl,但它将是相同的概念。您试图显示和隐藏的项属于父控件,因此必须具有对该父控件的引用。
if (this.menuStrip1.Items.ContainsKey(item))
  this.menuStrip1.Items[item].Visible = true;