2017-09-05 34 views
0

私はActiveDirectoryのすべてのグループメンバーを表示するDataGridViewを持っています。グループをダブルクリックすると、このグループのすべてのメンバーとサブメンバー(ユーザーを含む)をツリービューに表示したいと考えています。私はこれを行ういくつかの試みをしましたが、私の問題は、すべてのメンバーとサブメンバーがtreeViewに追加されるまでプロシージャを実行する必要があることです。 これには何らかのパターンが必要ですか? これから、私のコードはどのように見えますか?treeviewを再帰的に設定する

PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 
GroupPrincipal gp = GroupPrincipal.FindByIdentity(ctx, name); 

var nodes = new List<TreeNode>(); 
foreach (Principal p in gp.GetMembers()) 
{ 
    nodes.Add(new TreeNode(p.Name)); 
} 
treeView.Nodes.AddRange(nodes.ToArray()); 

答えて

1

特にオブジェクトの多くまたはを持つ大規模な環境では、少し時間がかかることがActive Directoryを照会しますが、ドメインコントローラへの低速な接続を持っている場合。

したがって、TreeViewのトップレベルノードを列挙して入力し、子を列挙するOUまたはコンテナを展開することをお勧めします。

このようにすると、一般的にユーザーがいくつかのノードを展開するだけで、それらのすべてではないため、アプリケーションの応答性と迅速性が向上します。