Переместить узел вверх и вниз в 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);
}
В этом коде выше переместите узел вверх и вниз, не имея родителей и потомков. на этом этапе все работает нормально.
если пользователь фокусируется на корневом узле и нажимает кнопку "вверх", то получает значение индекса последнего узла, используя этот индекс, я устанавливаю selectednode в положение "последний узел", даже если пользователь нажимает кнопку "вверх" от корневого узла, он перемещается на последний и делает этот узел видимым в древовидном списке.
Но если выбранный узел является первым дочерним узлом конкретного родителя, он не будет перемещаться к последнему ребенку при нажатии кнопки вверх. Как этого добиться? Возможно ли это сделать? Дайте некоторую идею, чтобы сделать это.
1 ответ
Я нахожу решение, Вот оно,
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);
}