C#遍历WinForm三级主菜单并绑定点击事件,并根据菜单所设置的tag来决要打开的窗口
给菜单绑定点击事件
private void SetMenuBindEventHandler()
{
var allMenus = this.menuStrip1.Items;
foreach (ToolStripMenuItem oneItem in allMenus)
{
bool hasTwoSubMenus = oneItem.HasDropDownItems && oneItem.DropDownItems.OfType<ToolStripMenuItem>().Any();
if (hasTwoSubMenus)
{
foreach (object twoObj in oneItem.DropDownItems)
{
if(twoObj is ToolStripMenuItem)
{
ToolStripMenuItem twoItem = (ToolStripMenuItem)twoObj;
bool hasThrSubMenus = twoItem.HasDropDownItems && twoItem.DropDownItems.OfType<ToolStripMenuItem>().Any();
if (hasThrSubMenus)
{
foreach (ToolStripMenuItem thrItem in twoItem.DropDownItems)
{
//三菜单菜单绑定点击事件
thrItem.Click += new EventHandler(ToolStripItem_Click);
}
}
else
{
//二菜单菜单绑定点击事件
twoItem.Click += new EventHandler(ToolStripItem_Click);
}
}
else
{
continue;
}
}
}
else
{
#region 无下级一级菜单项绑定点击事件
oneItem.Click += new EventHandler(ToolStripItem_Click);
#endregion
}
}
}
菜单点击事件方法
private void ToolStripItem_Click(object sender, EventArgs e)
{
//定位目标
ToolStripItem item = (ToolStripItem)sender;
if (fm != null) fm.Close();
switch (item.Tag)
{
case "hdhms": fm = new FormHdhCms(); break;//
default:
fm = null;
break;
}
if (fm != null) ShowForm(fm);
}
查看更多关于C#遍历WinForm三级主菜单并绑定点击事件的详细内容...