一个对象的适配器,实现TreeNode接口到TreeNode的TreeView
本文关键字:TreeNode 接口 TreeView 实现 适配器 一个对象 | 更新日期: 2023-09-27 17:49:43
假设
public interface ITreeNode
{
string Text { get; set; }
IEnumerable<ITreeNode> Nodes { get; set; }
}
假设我们有树的第一个节点,其中每个对象都实现了该接口。
在TreeView中显示树(ITreeNode的树)的简单方法是什么?
换句话说,我如何使整个树的ITreeNode为System.Windows.Forms.TreeView的System.Windows.Forms.TreeNode ?
请注意:上面的接口只是为了得到一个想法,如果有一个替代的方法来适应树节点的某些类型的树节点为TreeView存在,请建议
Windows窗体TreeView
将只在类型TreeNode
上操作,所以如果您想使用ITreeNode
的控件实例,则需要进行某种转换。我建议使用如下所示的扩展方法:
public static class TreeViewExtensions {
public static void Add(this TreeNodeCollection nodes, ITreeNode node) {
TreeNode treeNode = new TreeNode(node.Text);
foreach (ITreeNode child in node.Nodes) treeNode.Nodes.Add(child);
nodes.Add(treeNode);
}
}
然后你可以把你的节点(和所有的子节点,和所有的子节点,等等)添加到TreeView
控件,没有大惊小怪:
myTreeView.Nodes.Add(myInstanceOfITreeNode);
话虽如此,使用外部接口的对象和然后将转换为TreeNode
表示并没有太大的优势——您还不如直接使用实际的节点类。