如何遍历一个窗体中的所有菜单项(ToolStripMenuItem)并能遍历二级菜单

binerhh 2008-11-21 10:33:53
如题:如何遍历一个窗体中的所有菜单项(ToolStripMenuItem)并能遍历二级菜单
我用
foreach (ToolStripMenuItem c in this.MainMenuStrip.Items)
只能遍历到一级菜单,请问如何才能遍历所有菜单项,是用递归吗?请问代码如何写?
...全文
1306 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序小海 2010-10-25
  • 打赏
  • 举报
回复
学习!!
chj853 2010-09-14
  • 打赏
  • 举报
回复
xuexixuexi
ChinaITOldMan 2010-07-07
  • 打赏
  • 举报
回复
learning
lmyclmyc 2009-07-30
  • 打赏
  • 举报
回复
xuexixuexi
pasanal 2008-12-10
  • 打赏
  • 举报
回复
用递归
private void getSubItem(ToolStripMenuItem dc)
{

this.richTextBox1.Text += dc.Text + "\n";
this.arrayItems.Add(dc);
if (dc.DropDownItems.Count > 0)
{
for (int i = 0; i < dc.DropDownItems.Count; i++)
{
if (dc.DropDownItems[i] is ToolStripMenuItem)
{
ToolStripMenuItem sdc = dc.DropDownItems[i]
as ToolStripMenuItem;
getSubItem(sdc);
}

}

}
}
wangkuang5 2008-11-24
  • 打赏
  • 举报
回复
不用foreach
用for循环,if(c.DropDownItems[i] is ToolStripMenuItem )来判断
binerhh 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangkuang5 的回复:]
C# code
foreach (ToolStripMenuItem c in this.MainMenuStrip.Items)
{
foreach (ToolStripMenuItem dc in c.DropDownItems) {
foreach (ToolStripMenuItem sdc in dc.DropDownItems)
{
MessageBox.Show(sdc.Text);
}
}
}
//这样能取到第三级菜单
//所以…
[/Quote]

谢谢你,这样能遍历出所有的菜单了,但是我为了美观在二级菜单之间加了一个像“------”这样的分隔线,在遍历的时候这个分隔成了“System.Windows.Forms.ToolStripSeparator”,系统报错为:无法将类型为“System.Windows.Forms.ToolStripSeparator”的对象强制转换为类型“System.Windows.Forms.ToolStripMenuItem”。
这怎么解决啊?
wangkuang5 2008-11-21
  • 打赏
  • 举报
回复

foreach (ToolStripMenuItem c in this.MainMenuStrip.Items)
{
foreach (ToolStripMenuItem dc in c.DropDownItems) {
foreach (ToolStripMenuItem sdc in dc.DropDownItems)
{
MessageBox.Show(sdc.Text);
}
}
}
//这样能取到第三级菜单
//所以里应该这样

class ToolStripMenuItemList{
ToolStripMenuItem mItem;//菜单项
ToolStripMenuItem parentItem;//指示它的父级菜单是谁
......
}

.....

List<ToolStripMenuItemList> MenuItemList= new List<ToolStripMenuItemList>();

foreach (ToolStripMenuItem dc in c.DropDownItems) {
foreach (ToolStripMenuItem sdc in dc.DropDownItems)
{
MenuItemList.Add(new ToolStripMenuItemList(sdc ,dc ));
}
}
大致是这个意思

111,089

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧