我需要扩展 TreeNode 类,以便可以向每个节点添加自定义属性(因为 WebForms TreeNode 不包含 Tag 属性)。所以这是我的CustomTreeNode:
public class CustomTreeNode : TreeNode
{
public CustomTreeNode()
{
}
public CustomTreeNode(int nodeId, string nodeType)
{
NodeId = nodeId;
NodeType = nodeType;
}
public string NodeType { get; set; }
public int NodeId { get; set; }
}
如果我创建一个 CustomTreeNode 并将其添加到 TreeView:
CustomTreeNode node = new CustomTreeNode(1, "CustomType");
treeView.Nodes.Add(node);
然后我会得到一个强制转换异常,执行以下操作:
CustomTreeNode selectedNode = (CustomTreeNode)TreeView.SelectedNode;
因为 TreeView 返回的是 TreeNode,而不是 CustomTreeNode。
我做了一些阅读,看起来我需要扩展 TreeView 类,并重写 CreateNode() 方法以返回 CustomTreeNode 而不是 TreeNode。所以我创建了这个:
public class CustomTreeView : TreeView
{
protected override TreeNode CreateNode()
{
return new CustomTreeNode();
}
}
然而,问题是 CreateNode() 不接受任何参数,因此您必须调用 CustomTreeNode 类的空构造函数。因此,当我在上面创建我的 CustomTreeNode 时,当我从 CustomTreeView 取回它时,nodeId 和 nodeType 值已经丢失,因为空构造函数返回一个没有任何值的节点。
非常感谢任何帮助。