通常,当我使用C#/ VB附带的标准TreeView控件时,我会编写自己的方法来将数据传入和传出Tree的内部层次结构存储。
可能有办法将GUI“绑定”到我可以指向的数据存储(例如XML文件),当用户编辑树项时,它应该将其保存回商店。有没有办法做到这一点?
答案 0 :(得分:6)
以下文章应该让你做你想做的事 http://www.codeproject.com/KB/tree/bindablehierarchicaltree.aspx
修改:如果你不需要像上面那样精心设计的东西, 以下可能更容易/更合适: http://www.codeproject.com/KB/tree/dbTree.aspx
编辑2: 看到您希望这个响应树视图中的更改,您可能需要第一个选项。
答案 1 :(得分:0)
我通过创建一个继承TreeNode并包含一个对象的类来解决它。 然后,您可以将记录绑定到该节点,并在Click或DoubleClick事件期间将其重新调用。 例如
class TreeViewRecord:TreeNode
{
private object DataBoundObject { get; set; }
public TreeViewRecord(string value,object dataBoundObject)
{
if (dataBoundObject != null) DataBoundObject = dataBoundObject;
Text = value;
Name = value;
DataBoundObject = dataBoundObject;
}
public TreeViewRecord()
{
}
public object GetDataboundObject()
{
return DataBoundObject;
}
}
然后,您可以在构建TreeView时绑定到每个节点,例如。
TreeView.Nodes.Add(new TreeViewRecord("Node Text", BoundObject));
//or for subNode
TreeView.Nodes[x].Nodes.Add(new TreeViewRecord("Node Text", BoundObject));
然后,您可以将DoubleClick事件绑定到这样的内容
private void TreeViewDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
object exp = ((TreeViewRecord) e.Node).GetDataboundObject();
//Do work
}