基础设施选定节点

Infragistics Selected Node

想知道是我的错误还是遇到了bug。

我有一个包含 parents 和 children 的网格。我制作了按钮来将节点从上到下和向后移动。这有效,但第一个选定的节点保持选定状态。可以根据需要移动应移动的节点。为什么还是显示第一个选中的节点?[​​=13=]

private void IDC_ARROW_UP_Click(object sender, System.EventArgs e)
{
    foreach (Infragistics.Win.UltraWinTree.UltraTreeNode Node in this.uTreeMenue.SelectedNodes)
    {
        Node.Reposition(Node, Infragistics.Win.UltraWinTree.NodePosition.Previous);
        Node.Selected = true;
    }
}

选择的节点如下图:

---编辑:

private void IDC_ARROW_UP_Click(object sender, System.EventArgs e)
{
    var NodeSelected = uTreeMenue.SelectedNodes;
    var NodeCount = NodeSelected.Count;
    NodeSelected.SortByPosition();

    if (NodeCount > 0 && NodeSelected[0].PrevVisibleNode is Infragistics.Win.UltraWinTree.UltraTreeNode Node)
        Node.Reposition(NodeSelected[NodeCount - 1], Infragistics.Win.UltraWinTree.NodePosition.Next);
}

--- Down_Click_Method

相同

试试下面的代码:

private void IDC_ARROW_UP_Click(object sender, System.EventArgs e)
{
    var selected = uTreeMenue.SelectedNodes;
    selected.SortByPosition();
    var cnt = selected.Count;
    if (cnt > 0 && selected[0].PrevVisibleNode is UltraTreeNode node) 
    {                
        node.Reposition(selected[cnt - 1], Infragistics.Win.UltraWinTree.NodePosition.Next);
    }
}

上面代码实现的逻辑非常简单。而不是将所有选定的节点(例如下图中的 Canada…France)向上移动到位于所有选定项目之前的第一个节点,在所有选定项目之后向下移动:

因此,在将所有选定项目之前的节点向下移动后(在测试示例中,这是 Brazil 项目),UltraTree 控件将看起来如下所示:

要正确确定所选项目的限制,应使用 SortByPosition() 方法对它们进行排序,该方法对 SelectedNodes 集合进行排序,使成员的出现顺序与它们在树中的顺序相同.