示例#1
0
        internal static TreeNode AddChildNode(TreeNode parentNode, string name, FetchXmlBuilder fxb, TreeNode sisterNode = null)
        {
            var childNode = new TreeNode(name);

            childNode.Tag  = new Dictionary <string, string>();
            childNode.Name = childNode.Text.Replace(" ", "");
            if (name == "#comment")
            {
                childNode.ForeColor = System.Drawing.Color.Gray;
            }
            if (parentNode != null)
            {
                if (sisterNode != null)
                {
                    parentNode.Nodes.Insert(sisterNode.Index + 1, childNode);
                }
                else
                {
                    var parentCap = new FetchNodeCapabilities(parentNode.Name, true);
                    var nodeIndex = parentCap.IndexOfChild(name);
                    var pos       = 0;
                    while (pos < parentNode.Nodes.Count && nodeIndex >= parentCap.IndexOfChild(parentNode.Nodes[pos].Name))
                    {
                        pos++;
                    }
                    if (pos == parentNode.Nodes.Count)
                    {
                        parentNode.Nodes.Add(childNode);
                    }
                    else
                    {
                        parentNode.Nodes.Insert(pos, childNode);
                    }
                }
            }
            Validate(childNode, fxb);
            return(childNode);
        }