Rob*_*cks 5 c# data-binding treeview
通常,当我使用C#/ VB附带的标准TreeView控件时,我编写自己的方法来将数据传入和传出Tree的内部层次结构存储.
可能有方法将GUI"绑定"到我可以指向的数据存储(例如XML文件),并且当用户编辑树项时,它应该将其保存回商店.有没有办法做到这一点?
以下文章应该让你做你想要的.
http://www.codeproject.com/KB/tree/bindablehierarchicaltree.aspx
编辑:如果您不需要像上面那样详细的内容,以下内容可能更容易/更合适:http: //www.codeproject.com/KB/tree/dbTree.aspx
编辑2: 看到您希望这个响应树视图中的更改,您可能需要第一个选项.
小智 1
我通过创建一个继承 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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后您可以在构建 TreeView 时绑定到每个节点,例如。
TreeView.Nodes.Add(new TreeViewRecord("Node Text", BoundObject));
//or for subNode
TreeView.Nodes[x].Nodes.Add(new TreeViewRecord("Node Text", BoundObject));
Run Code Online (Sandbox Code Playgroud)
然后你可以将 DoubleClick 事件绑定到这样的东西
private void TreeViewDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
object exp = ((TreeViewRecord) e.Node).GetDataboundObject();
//Do work
}
Run Code Online (Sandbox Code Playgroud)