private ITreeNode CreateTreeNode(object o, TreeNodeDesigner des, TreeNodeDesigner parentDes)
        {
            var node = tree.CreateNode();
            node.Tag = des;
            node.Expand();
            des.Services = Services;
            des.Host = this;
            des.TreeNode = node;
            des.Component = o;
            des.Parent = parentDes;
            des.Initialize(o);

            return node;
        }
 private TreeNodeDesigner CreateDesigner(object o)
 {
     if (o == null)
         return null;
     TreeNodeDesigner des = o as TreeNodeDesigner;
     if (des != null)
     {
         if (des.Component != null)
         {
             o = des.Component;
         }
     }
     if (des == null)
     {
         var attr = o.GetType().GetCustomAttributes(typeof(DesignerAttribute), true);
         if (attr.Length > 0)
         {
             var desType = Type.GetType(
                 ((DesignerAttribute) attr[0]).DesignerTypeName,
                 true);
             des = (TreeNodeDesigner) Activator.CreateInstance(desType);
         }
         else
         {
             des = new TreeNodeDesigner();
         }
     }
     mpitemToDesigner[o] = des;
     return des;
 }