C# 防止在DotNetBar AdvTree/TreeControl的子节点上拖放

C# 防止在DotNetBar AdvTree/TreeControl的子节点上拖放,c#,treecontrol,dotnetbar,C#,Treecontrol,Dotnetbar,我正在使用DotNetBar Advtree组件实现一个TreeControl。然而,我似乎很难找到使特定节点不可能有任何子节点的属性。下面是我想要停止的 例如,RSS提要不能包含在RSS提要中。有些实际上我希望一些节点是可拖动的,并且可以有子节点,而其他节点只能拖动 谢谢你的帮助。我注意到属性NodesIndent,我已将其设置为-1或5000,但两者都没有任何帮助。根据,有一个DragDrupEnabled属性来控制此属性。如果不起作用,请处理BeforeNodeDragStart事件并

我正在使用DotNetBar Advtree组件实现一个TreeControl。然而,我似乎很难找到使特定节点不可能有任何子节点的属性。下面是我想要停止的

例如,RSS提要不能包含在RSS提要中。有些实际上我希望一些节点是可拖动的,并且可以有子节点,而其他节点只能拖动

谢谢你的帮助。我注意到属性NodesIndent,我已将其设置为-1或5000,但两者都没有任何帮助。

根据,有一个DragDrupEnabled属性来控制此属性。如果不起作用,请处理BeforeNodeDragStart事件并取消拖动

[编辑:添加以下内容]


若要防止在某些节点下而不是其他节点下拖动节点,请处理BeforeNodeDrop事件,并设置Cancel=true,前提是所拖动的节点无法作为子节点添加到目标节点。

刚刚在文档中发现

“获取或设置NewParentNode内的新插入位置。要拖动的节点的节点集合。如果InsertPosition为-1,则ParentNode引用当前鼠标悬停节点,拖放节点将作为子节点添加到该节点。”


因此,基本上我可以捕获它是否被添加为子节点,比较节点类型并决定是否接受删除。

我已经找到了如何启用/禁用特定树节点的拖动,但我想声明的是,某些节点可以有子节点,而其他节点不能有子节点。@wonea我在答案中添加了更多信息。这有用吗?是的,我做了一个类型比较。A派生不同类型的节点,例如RSSNode:Node和InboxNode:Node。这很好,但由于我无法对节点重新排序,所以我唯一的选择似乎是以某种方式禁用子节点删除。atkon link的文档似乎建议您订阅NodeDragFeedback事件或BeforeNodeDrop事件,并在位置无效时取消该操作是的,这就是我正在努力解决的问题。我对树上的每个节点都有不同的节点类型,将它们与NodeDragFeedback进行比较可以很好地工作,但我无法重新排序节点以找到不同的方式;阻止节点具有子节点。