上下文菜单项和子项
本文关键字:菜单项 上下文 | 更新日期: 2023-09-27 18:07:14
我在表单中有一个ContextMenuStrip。
由于某种原因,我想同时更改上下文菜单的所有项。所以我写了这样的代码:
int a = 0;
foreach (ToolStripItem co in contextMenuStrip1.Items)
{
co.Text = "Menu" + a.ToString();
a++;
}
但是,虽然主项更改成功,但子项没有更改那么我怎样才能访问这些子项呢?
PS:我不能添加图像,因为我是新到这个论坛看到我的意思,我希望你得到的想法。
谢谢!
您需要强制转换为ToolStripDropDownItem
并检查DropDownItems
属性。当然,还要递归地更新它。
示例如下:
public void ChangeMenuItemsNames(ToolStripItemCollection collection)
{
foreach (ToolStripMenuItem item in collection)
{
item.Name = "New Name";
if (item is ToolStripDropDownItem)
{
ToolStripDropDownItem dropDownItem = (ToolStripDropDownItem)item;
if (dropDownItem.DropDownItems.Count > 0)
{
this.ChangeMenuItemsNames(dropDownItem.DropDownItems);
}
}
}
}
如何使用:
this.ChangeMenuItemsNames(this.contextMenuStrip1.Items);
因为根据MSDN, ToolStripButton,ToolStripLabel,ToolStripSeparator,ToolStripControlHost,ToolStripDropDownItem,ToolStripStatusLabel都继承自ToolStripItem,你可以尝试铸造作为操作符,然后设置其文本属性以及
希望这是你想要的。
void ChangeName(ToolStripItemCollection collection, ref int a)
{
foreach (ToolStripItem co in collection)
{
co.Text = "Menu" + a.ToString();
a++;
if (co is ToolStripDropDownItem)
{
ToolStripDropDownItem ts = co as ToolStripDropDownItem;
if (ts.DropDownItems != null) ChangeName(ts.DropDownItems, ref a);
}
}
}