将 TreeNode 与 C# 窗口窗体中的 XmlNode 绑定

本文关键字:XmlNode 绑定 窗体 窗口 TreeNode | 更新日期: 2023-09-27 18:37:06

所以,这是代码,我要求treeView1.Nodes同时包含TreeNodes和XmlNodes,特别是像上面的代码一样存储这个类对象:

    public class Node : TreeNode
    {
        public XmlNode node{ set; get; }
        public Node(XmlNode node):base(){
            this.node = node;
            base.Text = node.Name;
        }
        public void delete()
        {
            node.RemoveAll();
            node = null;
            base.Remove();
        }
    }
   private void populate(XmlNodeList nodes, TreeNodeCollection tree)
    {
        if (nodes != null)
        {
            foreach (XmlNode child in nodes)
            {
                int index = tree.Add(new Node(child));
                if (child.ChildNodes != null)
                {
                    populate(child.ChildNodes, tree[index].Nodes );
                }
            }
        }
    }

现在我意识到构造的 Node 对象仍然存储为 TreeNode,我怎样才能使上面的行成为可能?

Node selected = treeView1.SelectedNode;
selected.delete();

将 TreeNode 与 C# 窗口窗体中的 XmlNode 绑定

实际上,Node对象不是存储为TreeNodes,而是TreeNodes。或者更确切地说,TreeNode的子类.因此,在您的情况下,如果您知道树中的所有节点都将属于 Node 的类型,您可以简单地转换为它:

Node selected = (Node)treeView1.SelectedNode;