如何在列表框中的树视图类似列表视图项的按钮单击事件上递归地找到树视图项的下一个/上一个树视图项

本文关键字:视图 列表 递归 下一个 上一个 事件 单击 按钮 | 更新日期: 2023-09-27 18:35:11

在 WPF 中的TreeView中查找TreeViewItem的下一个和上一个元素。真的可以在ListView中找到ListBox项目吗?因为如果我迭代它,下一项会移动到下一个级别,而不是当前级别的子级别?有人可以在这里帮助我吗?

如何在列表框中的树视图类似列表视图项的按钮单击事件上递归地找到树视图项的下一个/上一个树视图项

在这里,您有两种按钮单击方法 - 在兄弟姐妹/孩子/父母之间上下移动:

private void btnDown_Click(object sender, RoutedEventArgs e)
    {
        if (!(((TreeViewItem)myTree.SelectedItem).Parent is TreeView))
        {
            ItemCollection nodes = ((TreeViewItem)((TreeViewItem)myTree.SelectedItem).Parent).Items;
            for (int i = 0; i < nodes.Count; i++)
            {
                if (nodes[i].Equals(myTree.SelectedItem))
                {
                    try
                    {
                        if (i < nodes.Count - 1)
                        {
                            ((TreeViewItem)nodes[i + 1]).IsSelected = true;
                        }
                        else
                        {
                            if (((TreeViewItem)myTree.SelectedItem).Items.Count != 0)
                            {
                                ((TreeViewItem)((TreeViewItem)myTree.SelectedItem).Items[0]).IsSelected = true;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                    break;
                }
            }
        }
        else
        {
            if (((TreeViewItem)myTree.SelectedItem).Items.Count > 0)
            {
                ((TreeViewItem)((TreeViewItem)myTree.SelectedItem).Items[0]).IsSelected = true;
            }               
        }
    }
    private void btnUp_Click(object sender, RoutedEventArgs e)
    {
        if (!(((TreeViewItem)myTree.SelectedItem).Parent is TreeView))
        {
            ItemCollection nodes = ((TreeViewItem)((TreeViewItem)myTree.SelectedItem).Parent).Items;
            for (int i = 0; i < nodes.Count; i++)
            {
                if (nodes[i].Equals(myTree.SelectedItem))
                {
                    try
                    {
                        if (i > 0)
                        {
                            ((TreeViewItem)nodes[i - 1]).IsSelected = true;
                        }
                        else
                        {
                            ((TreeViewItem)((TreeViewItem)nodes[i]).Parent).IsSelected = true;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                    break;
                }
            }
        }
    }

我宁愿采用不同的方法来实现所需的功能。点击此处的链接 : [http://inputsimulator.codeplex.com][1]

然后将二进制文件包含在我的项目引用中。

然后单击后退和前进按钮的事件,我发送了向上和向下击键并实现了所需的功能。

public void upbutton_click(object sender, RountedEventargs e)
{
  treeView1.Focus();
  Inputsimulater.SendKeys.SendWait("{UP}");
}