0

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

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

Datarow 还包含项目的名称。

所以我使用:

this.Controls[item].Visible = true;

项目 = 字符串(项目名称)

如果我用它来隐藏菜单条本身,如果我在 MenuStipItems 上尝试它,它会工作,它会给出一个空引用异常。

我怎样才能控制MenuStip里面的项目,只有项目的名字???

代码:

    DataTable dt = GetData();
    foreach (DataRow row in dt.Rows)
    {
        string item = row["ItemNaam"].ToString();
        foreach (string rol in Rollen)
        {
            DataRow dr = GetDataByItemNaam(item);
            if (Convert.ToBoolean(dr[rol]) == true)
            {
                this.Controls[item].Visible = true; //Show Item
            }
        }
    }
4

2 回答 2

1

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

if (this.menuStrip1.Items.ContainsKey(item))
  this.menuStrip1.Items[item].Visible = true;
于 2012-07-06T13:16:14.037 回答
0

我已经解决了这个问题:

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

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

也许它不是正确/最快的方式,但它应该像它一样工作。

于 2012-07-10T07:27:52.170 回答