C# .NETTreeNode能知道它';她的父母变了?
我有一个类扩展了.NET3.5(C#)中的C# .NETTreeNode能知道它';她的父母变了?,c#,.net,windows,winforms,C#,.net,Windows,Winforms,我有一个类扩展了.NET3.5(C#)中的TreeNode,LocationNode。此类是一个TreeNode,但包含一些额外的数据点,便于提取。显示这些LocationNode对象的树视图实现了拖放功能。每个LocationNode对象都有一个dirty标志,指示我关心的任何数据点是否已被用户更改。巧合的是,我关心的数据点之一是父节点 我可以在拖放代码中实现一些功能,以确定父节点是否已经足够容易地更改,但是为了抽象起见,我希望LocationNode对象跟踪它们自己的脏标志,并在必要时将其设
TreeNode
,LocationNode
。此类是一个TreeNode
,但包含一些额外的数据点,便于提取。显示这些LocationNode
对象的树视图实现了拖放功能。每个LocationNode
对象都有一个dirty
标志,指示我关心的任何数据点是否已被用户更改。巧合的是,我关心的数据点之一是父节点
我可以在拖放代码中实现一些功能,以确定父节点是否已经足够容易地更改,但是为了抽象起见,我希望LocationNode
对象跟踪它们自己的脏标志,并在必要时将其设置为true
有没有办法知道父节点是否已更改?我看不到任何可以从LocationNode
钩住的事件会在集合中添加或删除时向我发出警报
想法?将节点添加到树视图时,存储其父节点(或parent.fullpath),然后在执行脏计算时,将当前父节点与存储的父节点进行比较。然后,在SetClean()函数中,再次存储当前父对象。通常,拖放操作仅提供和接收来自包含对象的通知。正如你所说的,这孩子不需要参加任何活动。(如果你把一个孩子拖到一个新的父母那里……他们会看错地方……是吗?)你看过事件聚合了吗?事件参数可以是ParentNode,ChildNode,父节点通知更改,然后子节点查看ChildNode是否为自身?不,您不能修改TreeNodeCollection类。在考虑了它之后,我认为这是最好的方法。如果NodeCollection类没有被密封,这样它就可以扩展到在节点添加和删除时触发事件,这将是一件好事,但在我看来,这是最干净的方式。