在 TreeLIist 中上下移动节点
Move Node Up and Down In TreeLIist
在我的项目中,我正在尝试创建一个树列表用户控件,以借助按钮(向上和向下)上下移动节点,并使焦点节点在树列表中始终可见
C#
private void button1_Click(object sender, EventArgs e)
{
int LastNodeIndex = treeList1.GetNodeIndex(treeList1.Nodes.LastNode);
int targetNodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode.PrevNode);
if(targetNodeIndex==-1)
{
treeList1.SetNodeIndex(treeList1.FocusedNode, LastNodeIndex);
treeList1.MakeNodeVisible(treeList1.FocusedNode);
}
else
{
int nodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode);
treeList1.SetNodeIndex(treeList1.FocusedNode, targetNodeIndex);
treeList1.MakeNodeVisible(treeList1.FocusedNode);
}
}
private void button2_Click(object sender, EventArgs e)
{
int targetNodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode.NextNode);
int nodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode);
treeList1.SetNodeIndex(treeList1.FocusedNode, targetNodeIndex);
treeList1.MakeNodeVisible(treeList1.FocusedNode);
}
在上面的代码中,在没有父节点和子节点的情况下上下移动节点。在这个阶段它工作正常。
如果用户关注根节点并单击向上按钮,此时使用该索引获取最后节点索引值,我将选定节点设置为最后节点位置,即使用户从根节点单击向上按钮,它也会移动到最后并创建该节点在树列表中可见。
但是如果所选节点作为特定父节点的第一个子节点,则在单击向上按钮时不会移动到最后一个子节点。如何做到这一点?这可能吗?给点思路吧。
找到解决方法了,给你,
C#
if(treeList1.FocusedNode.ParentNode!=null && foucsednodeindex == 0) // check its child node or not
{
int parentnodeindex = treeList1.GetNodeIndex(treeList1.FocusedNode.ParentNode);
int foucsedindex = treeList1.GetNodeIndex(treeList1.FocusedNode);
treeList1.SetFocusedNode(treeList1.FocusedNode.ParentNode);
int count = treeList1.FocusedNode.Nodes.Count;
treeList1.SetFocusedNode(treeList1.FocusedNode.NextVisibleNode);
treeList1.SetNodeIndex(treeList1.FocusedNode, count);
treeList1.MakeNodeVisible(treeList1.FocusedNode);
}
在我的项目中,我正在尝试创建一个树列表用户控件,以借助按钮(向上和向下)上下移动节点,并使焦点节点在树列表中始终可见
C#
private void button1_Click(object sender, EventArgs e)
{
int LastNodeIndex = treeList1.GetNodeIndex(treeList1.Nodes.LastNode);
int targetNodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode.PrevNode);
if(targetNodeIndex==-1)
{
treeList1.SetNodeIndex(treeList1.FocusedNode, LastNodeIndex);
treeList1.MakeNodeVisible(treeList1.FocusedNode);
}
else
{
int nodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode);
treeList1.SetNodeIndex(treeList1.FocusedNode, targetNodeIndex);
treeList1.MakeNodeVisible(treeList1.FocusedNode);
}
}
private void button2_Click(object sender, EventArgs e)
{
int targetNodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode.NextNode);
int nodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode);
treeList1.SetNodeIndex(treeList1.FocusedNode, targetNodeIndex);
treeList1.MakeNodeVisible(treeList1.FocusedNode);
}
在上面的代码中,在没有父节点和子节点的情况下上下移动节点。在这个阶段它工作正常。
如果用户关注根节点并单击向上按钮,此时使用该索引获取最后节点索引值,我将选定节点设置为最后节点位置,即使用户从根节点单击向上按钮,它也会移动到最后并创建该节点在树列表中可见。
但是如果所选节点作为特定父节点的第一个子节点,则在单击向上按钮时不会移动到最后一个子节点。如何做到这一点?这可能吗?给点思路吧。
找到解决方法了,给你,
C#
if(treeList1.FocusedNode.ParentNode!=null && foucsednodeindex == 0) // check its child node or not
{
int parentnodeindex = treeList1.GetNodeIndex(treeList1.FocusedNode.ParentNode);
int foucsedindex = treeList1.GetNodeIndex(treeList1.FocusedNode);
treeList1.SetFocusedNode(treeList1.FocusedNode.ParentNode);
int count = treeList1.FocusedNode.Nodes.Count;
treeList1.SetFocusedNode(treeList1.FocusedNode.NextVisibleNode);
treeList1.SetNodeIndex(treeList1.FocusedNode, count);
treeList1.MakeNodeVisible(treeList1.FocusedNode);
}