我的树是根据MDI菜单的层次结构生成的,怎么样让点击树的对应节点时触发对应的菜单的点击事件?在C#中

解决方案 »

  1.   

      function RoleTree_NodeChedked(treeId, nodeId, bChecked)
            {
                var node = igtree_getNodeById(nodeId);
                if(node.hasChildren())
                {
                    var children = node.getChildNodes();
                    for(var i=0;i<children.length;i++)
                    {
                        children[i].setChecked(bChecked);
                    }
                }
                //else
                {
                    var id = node.getTag();
                if(bChecked)
                {
                    if(RoleIDs.indexOf(';' + id + ';') < 0)
                    {
                        RoleIDs += id + ';';
                    }
                }
                else
                {
                    if(RoleIDs.indexOf(';' + id + ';') >= 0)
                    {
                        RoleIDs = RoleIDs.replace(';' + id + ';',';');
                    }
                }
            }
            }
      

  2.   

    生成树的时候,将树节点的Node的Tag属性设置为对应菜单项,然后点击时,获取这个Tag属性,转化成ToolStripMenuItem
    然后就可以用下面的代码触发:
    ToolStripMenuItem.PerformClick();
      

  3.   

    楼上基本正解,可以把tag属性设置为工具条的Name
      

  4.   

    非得要灵活可用的话,我建议用反射.菜单的Tag属性记录程序集+窗体名称.如 "Microsoft.CRM.FormVipInfo".
    生成树的时候也把相应的Tag给树节点.双击树节点的时候读取Tag,用反射创建窗体.
    //用反射创建form窗体实例。
    //假设node为当前点击的节点
    if (node.Tag != null)
    {
        string assStr = node.Tag.ToString();
        Assembly asm = Assembly.Load(assStr.Substring(0, assStr.LastIndexOf(".")));//取得程序集名
        object frmObj = asm.CreateInstance(assStr);//程序集+form的类名。
    }