在我的树视图中,我想记住在删除或插入节点后扩展了哪些节点并重绘了该状态。我通过记住扩展节点的索引解决了这个问题。如果删除了一个节点,我会减少之后的所有 indeces。这很有效,因为我可以使用 treeView.SelectedNode 访问已删除的节点,但是如何获取插入节点的新索引?我无法通过保存对节点或名称或标签的引用来解决它,因为当我重绘树时,节点是全新创建的 - 我想我无论如何都无法获得对新创建节点的引用最好的问候,期待
问问题
1613 次
3 回答
0
我的方式:使用你自己声明的类:
class TreeNodeEx : TreeNode
{
public void Remove()
{
base.Remove();
// what you want to do
UpdateNode(this.Parent);
}
}
于 2012-07-31T07:53:33.483 回答
0
您可以将 observableCollection 绑定到您的 TreeNode Then :
var obd = Observable.FromEvent<NotifyCollectionChangedEventArgs>(
ev => obdCollection.CollectionChanged += CheckChanges,ev=> obdCollection.CollectionChanged -= CheckChanges);
private void CheckChanges(object sender, NotifyCollectionChangedEventArgs e)
{
Console.WriteLine("new Starting index : "+e.NewStartingIndex);
Console.WriteLine("Old Starting index : " + e.OldStartingIndex);
Console.WriteLine("new Items : " + e.NewItems);
Console.WriteLine("Old Items : " + e.OldItems);
}
这样您就可以检查集合中发生了什么变化。
于 2012-07-31T08:52:24.307 回答
0
答案并不是我真正想要的,但是在我发现插入“AfterSelect”事件后,我这样做了:
private void treeViewProduct_AfterSelect(object sender, TreeViewEventArgs e)
{
if (insertMode)
{
treeViewProduct.NotifyAboutInsert(e.Node.Index);
}
...
}
然后我的树视图处理节点的更改索引,并完美地重绘树。
于 2012-08-01T11:52:04.910 回答