C# 在按下某些键后,如何在树视图中选择同一级别上的上一个/下一个节点?

C# 在按下某些键后,如何在树视图中选择同一级别上的上一个/下一个节点?,c#,C#,假设有一个树景: item1 |_item2 | |_item3 | |_item4 |_item5 |_item6 如果用户按CTRL-Up或CTRL-Down,如何使光标停留在级别1上,以便仅在项目2、项目5和项目6之间导航 我思考了这次行动背后的逻辑: if (user presses ctrl down) and (level is 1) and (the next node exists) go to the next node from level 1 如何在C#中实

假设有一个树景:

item1
|_item2
|  |_item3
|  |_item4
|_item5
|_item6
如果用户按CTRL-Up或CTRL-Down,如何使光标停留在级别1上,以便仅在项目2、项目5和项目6之间导航

我思考了这次行动背后的逻辑:

if (user presses ctrl down) and (level is 1) and (the next node exists)
    go to the next node from level 1

如何在C#中实现这一点?谢谢。

如果您订阅了KeyDown事件,您可以只使用当前节点的Index属性

此示例仅处理控件向下箭头场景:

void treeView1_KeyDown(object sender, KeyEventArgs e) {
  if (e.Control && e.KeyCode == Keys.Down) {
    TreeNode tn = treeView1.SelectedNode;
    if (tn != null) {
      if (tn.Parent == null) {
        if (tn.Index < treeView1.Nodes.Count - 1) {
          treeView1.SelectedNode = treeView1.Nodes[tn.Index + 1];
        }
      } else {
        if (tn.Index < tn.Parent.Nodes.Count - 1) {
          treeView1.SelectedNode = tn.Parent.Nodes[tn.Index + 1];
        }
      }
    e.Handled = true;
    }
  }
}
void treeView1_KeyDown(对象发送方,KeyEventArgs e){
if(e.Control&&e.KeyCode==Keys.Down){
TreeNode tn=TreeView W1.SelectedNode;
如果(tn!=null){
如果(tn.Parent==null){
if(tn.Index