gpt4 book ai didi

c# - Foreach MenuStrip 中的每个子项

转载 作者:太空狗 更新时间:2023-10-30 00:07:56 27 4
gpt4 key购买 nike

我想获取我的 MenuStrip 的所有 SubItems,因此我可以一次更改它们。

我正在尝试以下操作,但它们不起作用:

foreach (ToolStripMenuItem toolItem in menuStrip1.DropDownItems)
{
//Do something with toolItem here
}

有人可以帮我编写一个好的 foreach 循环 以从 MenuStrip 获取所有 SubMenuItems(DropDownItems) 吗?

编辑现在尝试使用以下递归方法:

private void SetToolStripItems(ToolStripItemCollection dropDownItems)
{
try
{
foreach (object obj in dropDownItems)
{
if (obj.GetType().Equals(typeof(ToolStripMenuItem)))
{
ToolStripMenuItem subMenu = (ToolStripMenuItem)obj;

if (subMenu.HasDropDownItems)
{
SetToolStripItems(subMenu.DropDownItems);
}
else
{

}
}
}
}
catch
{

}
}

最佳答案

试试这个:

List<ToolStripMenuItem> allItems = new List<ToolStripMenuItem>();
foreach (ToolStripMenuItem toolItem in menuStrip.Items)
{
allItems.Add(toolItem);
//add sub items
allItems.AddRange(GetItems(toolItem));
}
private IEnumerable<ToolStripMenuItem> GetItems(ToolStripMenuItem item)
{
foreach (ToolStripMenuItem dropDownItem in item.DropDownItems)
{
if (dropDownItem.HasDropDownItems)
{
foreach (ToolStripMenuItem subItem in GetItems(dropDownItem))
yield return subItem;
}
yield return dropDownItem;
}
}

关于c# - Foreach MenuStrip 中的每个子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15380730/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com