0

WPFTreeViewItemで aの次の要素と前の要素を検索します。でアイテムTreeViewを見つけることは本当に可能ですか? それを繰り返すと、次のアイテムが現在のレベルのサブレベルではなく次のレベルに移動するからですか? 誰かがここで私を助けることができますか?ListBoxListView

4

2 に答える 2

1

ボタンのクリックには 2 つの方法があります。兄弟/子/親の間で上下に移動します。

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;
                }
            }
        }
    }
于 2013-10-14T10:46:24.123 に答える
0

目的の機能を実現するために、別のアプローチが必要でした。ここのリンクをたどってください:[http://inputsimulator.codeplex.com] [1]

次に、プロジェクト参照にバイナリを含めました。

次に、戻るボタンと進むボタンのイベントをクリックして、キーストロークを上下に送信し、必要な機能を実現しました。

public void upbutton_click(object sender, RountedEventargs e)
{
  treeView1.Focus();
  Inputsimulater.SendKeys.SendWait("{UP}");
}
于 2013-10-25T14:05:50.250 に答える