- 自動編程
- 自動出圖
- 設(shè)計(jì)建模
- UG/NX
【技術(shù)分享】【C#】樹列表的節(jié)點(diǎn)拖拽

琛
帖子
14
14
精華
1
1
積分
154
154
二次開發(fā)
技術(shù)分享
樹列表的拖拽涉及三個NX的回調(diào),需要在三個回調(diào)設(shè)置好規(guī)則之后才能進(jìn)行拖拽操作。
tree_control0.SetOnDropHandler(new Tree.OnDropCallback(OnDropCallback));
tree_control0.SetIsDragAllowedHandler(new Tree.IsDragAllowedCallback(IsDragAllowedCallback));
tree_control0.SetIsDropAllowedHandler(new Tree.IsDropAllowedCallback(IsDropAllowedCallback));
1.設(shè)置節(jié)點(diǎn)是否允許拖拽,下方設(shè)置的為父節(jié)點(diǎn)禁止拖拽。
internal Node.DragType IsDragAllowedCallback(Tree tree, Node node, int columnId)
{
//是否允許拖動回調(diào)
if (node.ParentNode != null)
{
return Node.DragType.All;
}
return Node.DragType.None;
}
2.設(shè)置是否執(zhí)行拖拽回調(diào),執(zhí)行的方式,下方為目標(biāo)節(jié)點(diǎn)為父節(jié)點(diǎn)時,作為子節(jié)點(diǎn)放置到其中,如果有父節(jié)點(diǎn),則放到該節(jié)點(diǎn)后面。
/// <summary>
/// 是否執(zhí)行拖拽回調(diào)
/// </summary>
/// <param name="tree"></param>
/// <param name="node">拖拽的節(jié)點(diǎn)</param>
/// <param name="columnId"></param>
/// <param name="targetNode">或拽到的目標(biāo)節(jié)點(diǎn)</param>
/// <param name="targetColumnId"></param>
/// <returns></returns>
public Node.DropType IsDropAllowedCallback(Tree tree, Node node, int columnId, Node targetNode, int targetColumnId)
{
//是否執(zhí)行拖拽回調(diào)
//SessionEx.WriteInformationWindow($"{targetNode.GetColumnDisplayText(0)}__{targetColumnId}");
var dropType = targetNode.ParentNode == null ? Node.DropType.On : Node.DropType.After;
return dropType;
}
3.拖拽回調(diào),拖拽發(fā)生后執(zhí)行此處的內(nèi)容,需要手工新建與移除拖拽后目標(biāo)節(jié)點(diǎn)。
internal bool OnDropCallback(Tree tree, Node[] nodes, int columnId, Node targetNode, int targetColumnId, Node.DropType dropType, int dropMenuItemId)
{
//拖動回調(diào)
foreach (var node in nodes)
{
var nodeData = NodeDataManage.First(x => x.Node == node);
Node newNode = tree.CreateNode(node.GetColumnDisplayText(0));
if (dropType == Node.DropType.On)
{
tree.InsertNode(newNode, targetNode, null, Tree.NodeInsertOption.Last);
}
else if (dropType == Node.DropType.After)
{
var parent = targetNode.ParentNode;
tree.InsertNode(newNode, parent, targetNode, Tree.NodeInsertOption.First);
}
newNode.SetColumnDisplayText(1, node.GetColumnDisplayText(1));
newNode.SetColumnDisplayText(2, node.GetColumnDisplayText(2));
newNode.DisplayIcon = node.DisplayIcon;
newNode.SelectedIcon = node.SelectedIcon;
tree.DeleteNode(node);
}
return true;
}
登錄論壇用戶后可查看全部內(nèi)容
889
0
2024-04-19 10:43:10
by f3dexpress Nico
請選擇移動至版塊:
確認(rèn)移動
回復(fù)加入討論