如何在 C# windows 表单应用程序中访问子菜单项内的项目?
How to access items inside sub menu item in C# windows form application in ToolStripMenuItems?
我的 Windows 表单应用程序中有一个 toolstripmenuitem。
我需要访问每个子菜单项并检查是否有特定的菜单项名称可用,如果找到该项目,我想禁用它。
例如:
Report
|__Stock
| |__Stock Balance
| |__Stock Reorder
|__Sales
|__Summary
我的代码是这样的。根据我的代码,我可以访问子菜单(股票)并禁用它。但是我无法访问子菜单中的子项(库存余额)。
String specificMenuItemName = "Stock Balance";
foreach (ToolStripMenuItem menuItem in MainMenuStrip.Items)
{
if (menuItem != null)
{
if (menuItem.HasDropDownItems)
{
foreach (ToolStripItem subMenuItem in menuItem.DropDownItems)
{
if (subMenuItem is ToolStripSeparator)
{ }
else
{
if (specificMenuItemName == subMenuItem.Text)
{
subMenuItem.Enabled = false;
}
}
}
}
}
}
如何访问股票余额并禁用它?
递归函数遍历每个具有下拉项目的项目,直到找到具有指定名称的项目,怎么样?像这样的东西(快速而肮脏,跳过检查分隔符和类似的东西......):
private static void DisableItem(ToolStripDropDownItem menu, bool enable, string text)
{
if (!menu.HasDropDownItems)
if (Equals(menu.Text, text))
menu.Enabled = enable;
else
return;
foreach(var subItem in menu.DropDownItems)
{
var item = subItem as ToolStripDropDownItem;
if (item == null) continue;
if (item.HasDropDownItems)
DisableItem(item, enable, text);
if (Equals(item.Text, text))
item.Enabled = enable;
}
}
我的 Windows 表单应用程序中有一个 toolstripmenuitem。 我需要访问每个子菜单项并检查是否有特定的菜单项名称可用,如果找到该项目,我想禁用它。 例如:
Report
|__Stock
| |__Stock Balance
| |__Stock Reorder
|__Sales
|__Summary
我的代码是这样的。根据我的代码,我可以访问子菜单(股票)并禁用它。但是我无法访问子菜单中的子项(库存余额)。
String specificMenuItemName = "Stock Balance";
foreach (ToolStripMenuItem menuItem in MainMenuStrip.Items)
{
if (menuItem != null)
{
if (menuItem.HasDropDownItems)
{
foreach (ToolStripItem subMenuItem in menuItem.DropDownItems)
{
if (subMenuItem is ToolStripSeparator)
{ }
else
{
if (specificMenuItemName == subMenuItem.Text)
{
subMenuItem.Enabled = false;
}
}
}
}
}
}
如何访问股票余额并禁用它?
递归函数遍历每个具有下拉项目的项目,直到找到具有指定名称的项目,怎么样?像这样的东西(快速而肮脏,跳过检查分隔符和类似的东西......):
private static void DisableItem(ToolStripDropDownItem menu, bool enable, string text)
{
if (!menu.HasDropDownItems)
if (Equals(menu.Text, text))
menu.Enabled = enable;
else
return;
foreach(var subItem in menu.DropDownItems)
{
var item = subItem as ToolStripDropDownItem;
if (item == null) continue;
if (item.HasDropDownItems)
DisableItem(item, enable, text);
if (Equals(item.Text, text))
item.Enabled = enable;
}
}