C# 查找动态创建的菜单项的子菜单

C# 查找动态创建的菜单项的子菜单,c#,.net,winforms,c#-4.0,dynamic,C#,.net,Winforms,C# 4.0,Dynamic,请看这张图片 我有一个带有银行项目的菜单条,它动态创建了子菜单,每个子菜单都有付款和存款,每个付款和现金都有支票和现金 如果我点击SBI中的现金->存款->现金,它应该说它来自哪里,因为我所有的银行都有相同的表格,请告诉ne我如何找到它 动态创建的菜单 ToolStripMenuItem bankname = new ToolStripMenuItem(dr["bankabbr"].ToString()); if (Convert.ToInt32(dr["isdeposi

请看这张图片

我有一个带有银行项目的菜单条,它动态创建了子菜单,每个子菜单都有付款和存款,每个付款和现金都有支票和现金

如果我点击SBI中的现金->存款->现金,它应该说它来自哪里,因为我所有的银行都有相同的表格,请告诉ne我如何找到它

动态创建的菜单

ToolStripMenuItem bankname = new ToolStripMenuItem(dr["bankabbr"].ToString());
            if (Convert.ToInt32(dr["isdeposit"]) == 1)
            {
                ToolStripMenuItem deposit = new ToolStripMenuItem("Deposit"); 
                if (Convert.ToInt32(dr["hascashindeposit"]) == 1)
                {
                    ToolStripMenuItem dcash = new ToolStripMenuItem("Cash");
                    dcash.Click += new EventHandler(dcash_Click);
                    deposit.DropDownItems.Add(dcash);
                    dcash.Name = "dcash";
                }
                if (Convert.ToInt32(dr["haschequeindeposit"]) == 1)
                {
                    ToolStripMenuItem dcheque = new ToolStripMenuItem("Cheque");
                    dcheque.Click += new EventHandler(dcheque_Click);
                    deposit.DropDownItems.Add(dcheque);

                }
                bankname.DropDownItems.Add(deposit);
            }
ToolStripMenuItem有一个名为OwnerItem的属性。你可以爬到一个已知的根项目上,或者直到你到达长条带并在途中收集你的项目名称

我假设你的根是一个工具条

使用您的示例将导致 路径[0]=现金 路径[1]=Desposit
Path[2]=SBI

@Masoud发布imageshow需要10个声誉我可以访问表单加载事件中创建的名称吗?我必须使用ToolStripMenuItem dcash=sender作为ToolStripMenuItem;作品谢谢
private void dcash(object sender, EventArgs e)
{
    ToolStripMenuItem tsmi = (ToolStripMenuItem)sender;
    List<string> path = new List<string>();
    path.Add(tsmi.Name);
    while (tsmi.OwnerItem.GetType() != typeof(ToolStrip))
    {
         tsmi = (ToolStripMenuItem)tsmi.OwnerItem;
         path.Add(tsmi.Name);
    }
}