-4

私は持っています、私はtreeView1のノードを使用treeView1して作成する必要があります。したがって、treeView1のすべてのノードをトラバースする必要があり、の場合は、このノードをに追加する必要があります。このノードの子のいずれかにこのプロパティ( )がある場合は、このノードもに追加する必要があります。つまり、オブジェクトはフィルタリングされたtreeView1オブジェクトです。treeview2treeNode.Text == myStringtreeNode.Text == myStringtreeView2treeNode.Text == myStringtreeView2.Text != myStringtreeView2

誰かが私にこれを実装する方法のアイデアを教えてもらえますか?

4

1 に答える 1

0

TreeViews で再帰的なアプローチを使用する必要があるため、これを試してみてください。

 ...

        foreach (TreeNode item in treeView1.Nodes)//in case you have multiple rootnodes
            treeView2.Nodes.Add((TreeNode)item.Clone());//clone all treeview1 nodes into treeview2

        foreach (TreeNode node in treeView2.Nodes)//in case you have multiple rootnodes
            AmISelected(node, "momo");//filter all nodes recursively

 ...

private bool AmISelected(TreeNode root, string myString)
    {
        bool bfound = false;
        if (root.Text == myString)
            bfound = true;// I do have myString

        for (int i = root.Nodes.Count - 1; i >= 0; i--)
            if (AmISelected(root.Nodes[i], myString))
                bfound = true;// I've a child who have myString

        if (!bfound) //if i don't have myString neither any of my children
            if (root.Parent == null) // is it a root node
                treeView2.Nodes.Remove(root);
            else
                root.Parent.Nodes.Remove(root);

        return bfound;

    }

ここに画像の説明を入力

于 2012-09-13T23:17:39.167 に答える