1

* winformアプリケーションにツリービューコントロールがあります。ここで、私がやりたいことは次 のとおりです。彼のレベルで他のすべてのノードを折りたたみ、選択したノードのみを消費します。たとえば、次のシナリオを想定します。 - すべての教科 + コンピューター サイエンス + 数学

ルート ノードは「すべての科目」で、2つの子ノード1)コンピューター サイエンスと2)数学です。これら2 つの子ノードには、さらに子ノードがあります。

コンピューター サイエンスを選択すると、数学ノードが折りたたまれ、コンピューター サイエンス ノードが展開されます。 これはどのように達成できますか?これを達成するための提案は歓迎されます。

4

3 に答える 3

1

編集( Hans Passantに感謝) ヘンデルAfterSelectまたはBeforeSelectイベント、および他の兄弟ノードを折りたたみます。このような:

private void TreeViewAfterSelect(object sender, TreeViewCancelEventArgs e)
{
    foreach (TreeNode node in e.Node.Parent.Nodes)
    {
        if(node != e.Node)
            node.Collapse();
    }
}
于 2012-07-10T05:16:43.840 に答える
0

ツリービューノードのメソッド、、、、Collapse()CollapseAll()確認してくださいExpand()ExpandAll()

treeView1.SelectedNode.Collapse();

MSDNでCollapseCollapseAllExpandをお読みください。

于 2012-07-10T05:07:28.767 に答える
0

Ria のソリューションに基づいて、再帰を使用して兄弟と各兄弟の子ノードの両方を折りたたむことができます。以下は WPF で機能します。

    private void CollapseAll(ItemsControl Items, bool Collapse)
    {
        foreach (object obj in Items.Items)
        {
            ItemsControl ChildControl = Items.ItemContainerGenerator.ContainerFromItem(obj) as ItemsControl;
            if (ChildControl != null)
            {
                CollapseAll(ChildControl, Collapse);
            }
            TreeViewItem Item = ChildControl as TreeViewItem;
            if (Item != null) Item.IsExpanded = false;
        }
    }

    private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {
        TreeViewItem CurrentItem = (TreeViewItem)treeView1.SelectedItem;
        if (CurrentItem == null) return;
        if (!(CurrentItem.Parent is TreeViewItem)) return;
        TreeViewItem Parent = (TreeViewItem)CurrentItem.Parent;
        if (Parent == null) return;
        foreach (TreeViewItem TreeViewItem in Parent.Items)
        {
            if (TreeViewItem != CurrentItem)
            {
                CollapseAll(TreeViewItem, true);
                TreeViewItem.IsExpanded = false;
            }
        }
    }
}
于 2015-12-04T15:39:04.957 に答える