先看代码,动态添加控件
ToolStripMenuItem menu = new ToolStripMenuItem();
menu.Name="menu1";
menu.Text="Test";
menuStrip1.Items.Add(menu);
以上代码添加成功,有如下需求
将字符串 "menu1" 转换成对象 menu;说通俗点,就是根据对象的name属性中的字符串得到对象这个问题在google很多后没有发现解决办法;大概提到有以下方法;1,遍历menuStrip1的菜单,menuStrip1.items.find方法只能遍历最顶层的菜单,下级菜单不能用这个方法;
2,反射没找可用代码;不知实现起来是否有问题;
问这个问题的人不在少数,却不知道解决没有

解决方案 »

  1.   

    用递归。
    private void SelectNode(TreeNodeCollection n , string name)
            {
                foreach (TreeNode item in n)
                {
                    if (item.Name == name)
                    {
                        tn = item;
                        return;
                    }
                    
                    if (item.Nodes.Count != 0)
                    {
                        SelectNode(item.Nodes,name);
                    }
                                }
            }
    这个是treeView的代码。结构是一样的。
    tn就是结果。
      

  2.   

    private void SelectNode(TreeNodeCollection n , string name)
      {
      foreach (TreeNode item in n)
      {
      if (item.Name == name)
      {
      tn = item;
      return;
      }
        
      if (item.Nodes.Count != 0)
      {
      SelectNode(item.Nodes,name);
      }
      }
      }这个不行么,几级菜单你就写几个Foreach呗
      

  3.   

    你就不能同时创建个Dictionary<string,ToolStripMenuItem>,然后把那些菜单项添加进去吗