0

以前に でこれを行ったことがありますが、TextChanged イベントでテキストを含まないノードを非表示/フィルタリングできるようにDataGridView、表示されているノードをマスクする方法はありますか? 私はたくさんのノードを持っています。TreeViewTextBox

現在、これは機能しますが、「削除のみ」の機能であり、 からテキストを削除してもノードが追加されませんtextBox。前もって感謝します。

//Change in text will hide non matching nodes (remove only)
for (int i = 0; i<dirTree.Nodes.Count; i++)
{
    if(!dirTree.Nodes[i].Text.Contains(custNameTB.Text))
    {
       dirTree.Nodes.RemoveAt(i);
    }
}
4

2 に答える 2

1

たぶん、メモリ内の子としてすべてのノードを持つ「マスター」ノードを保持します。検索テキストがない場合は、それをツリービューに追加するだけです。次に、入力された検索テキストがある場合は、「マスター」ノードを通過し、それを使用して別のフィルター処理されたノード(目的のノードを子として)を作成し、ツリービューに追加します。

基本的には、ノード上に2つのコレクションを作成するだけです。私はすべてのノード(永続的)と、目的のノードのコピーだけを持つ別のノード(一時的)を持っています。

于 2012-08-17T23:23:16.370 に答える
0

ノードを非表示にすることはできませんでした (追加/削除する必要があります) ノードを表示し、その子ノードを表示する方法が難しいためです (10 個のネストされたノードと 5 個のノードを想像してみてください..) 別の解決策は、保存することですツリービュー(表示されないように設定したツリービュー、またはデータテーブルではより複雑に設定したツリービュー)および表示するツリービューがあるため、ノードを削除すると、重複したツリービューにのみ表示されます(表示されないツリービューは残り、ノードを失うことはありません)

于 2012-08-17T23:01:00.773 に答える