如何将对象绑定到C#中的treeview(Winforms)节点?
我想到了类似于ExNode:Windows.Forms.Node,它可以将对象作为成员除了treenode名称之外......但是我不确定这是正确的方法.
Bil*_*llW 18
imho你有几个策略:
在任何Node的Tag属性中粘贴任何类型的对象:缺点:当你检索它以使用它时,你将不得不将它强制转换回它的"原生形式":如果那个"原生形式"不是类型'对象.
子类TreeNode,并为您的对象添加公共字段,公共属性或其他内容...甚至列表......或者您需要与节点关联的任何内容.
假设您的对象属于同一类型,您可以创建一个类型的字典:Dictionary <TreeNode,myObjectType>,实例化它,并根据需要将TreeNode及其关联的对象存储为键/值对.
策略#1和#3的优点是,您只能根据需要存储关联对象策略#2:更适合您预期每个TreeNode将具有关联对象的情况.
当然,对于stragy#1和#3,您需要在运行时测试是否存在与特定节点关联的对象.
策略#1是一个简单的测试:如果节点的标签属性是空的:你知道没有对象:如果不是空的......并且标签字段中可能存在多种类型的对象...那么你'我必须拔出Tag对象,并确保它是正确的类型,如下所示:(以下示例假定公共类"Class1"已分配给TreeView中第一个节点的标记:
TreeNode thisNode = theTreeView.Nodes[0];
if (((thisNode.Tag != null) && (thisNode.Tag is Class1))) ... handle the object ...
Run Code Online (Sandbox Code Playgroud)
策略#3稍微容易一些,因为您可以只评估Dictionary <Node,myObject>.将Node包含为Key.
| 归档时间: |
|
| 查看次数: |
27103 次 |
| 最近记录: |