【发布时间】:2016-04-27 04:12:13
【问题描述】:
我有一个简单的应用程序,我在其中添加了所有菜单项,但它们被隐藏和禁用。用户登录后,我必须根据用户启用其中一些。为此,我使用 menuitem.Find(key, true) 函数搜索所有子项,但它仅适用于 2 个项目,其余项目未找到。下面是我的代码。
ToolStripItem[] items= this.menuStrip.Items.Find(row[0].ToString(), true);
这里的 row[0] 包含菜单项的名称。
我认为这些菜单项的声明必须有一些不同,但它们是相同的。不知道为什么会这样:(。
编辑:
在看到 vishakh 的回复后,我想在这里澄清一下,这行代码处于循环中,并且在此行之前填充了变量“row”以获取要搜索的新值。下面是更短的代码再次澄清。
foreach(var row in dtNames.Rows)
{
ToolStripItem[] items= this.menuStrip.Items.Find(row[0].ToString(), true);
items[0].visible=true;
}
每行的第一列包含菜单项的名称。
【问题讨论】:
-
避免这种情况的一个选择是遍历所有菜单项,然后遍历子项,看看它们的名称是否与键匹配,然后使其可见,但我想知道为什么 Find 功能无法正常工作.
标签: c# winforms visual-studio-2010