public void SetObject(string key, object obj) { if (string.IsNullOrWhiteSpace(key)) return; if (obj == null) return; string value = obj.GetType().FullName; string disply = string.Format("{0} : {1}", key.PadRight(key.Length + RightSpaceLength), value); NodeItem tag = new NodeItem(key, value, disply, obj, false, true); if (objectTreeView.Nodes.ContainsKey(key))//update { TreeNode node = objectTreeView.Nodes[key]; node.Nodes.Clear(); node.Text = disply; node.Tag = tag; } else//add { TreeNode node = new TreeNode(disply) { Name = key, Tag = tag }; node.ContextMenu = GetTopNodeMenu(node); objectTreeView.Nodes.Add(node); } }
private void AddChildsTo(TreeNode parent, NodeItem nodeItem, bool expand = true) { if (parent == null || nodeItem == null || nodeItem.IsFinal || nodeItem.Tag == null) return; int maxNameLenght; List<Member> list = GetObjectMember(nodeItem.Tag, out maxNameLenght); foreach (var item in list) { if (item.MType == MemberType.Final || item.MObject == null) { string value = GetDisplayValue(item.MObject); string display = string.Format("{0} : {1}", item.MName.PadRight(maxNameLenght), GetShortString(value, DefaultValueMaxLength)); NodeItem tag = new NodeItem(item.MName, value, display, item.MObject, true); TreeNode tmpNode = new TreeNode(display); tmpNode.Tag = tag; tmpNode.ToolTipText = value; tmpNode.ContextMenu = GetNodeMenu(tmpNode); AddChildTo(parent, tmpNode); } else if (item.MType == MemberType.List) { string value = item.MObject is ICollection ? ((ICollection)item.MObject).Count.ToString() : "*"; string display = string.Format("{0} : {1}", item.MName.PadRight(maxNameLenght), string.Format("[{0}]", value)); NodeItem tag = new NodeItem(item.MName, value, display, item.MObject); TreeNode tmpNode = new TreeNode(display); tmpNode.Tag = tag; tmpNode.ContextMenu = GetNodeMenu(tmpNode); AddChildTo(parent, tmpNode); } else//object { string value = item.MObject.GetType().FullName; string display = string.Format("{0} : {1}", item.MName.PadRight(maxNameLenght), item.MObject.GetType().FullName); NodeItem tag = new NodeItem(item.MName, value, display, item.MObject); TreeNode tmpNode = new TreeNode(display); tmpNode.Tag = tag; tmpNode.ContextMenu = GetNodeMenu(tmpNode); AddChildTo(parent, tmpNode); } } ExpandOrNot(parent); }