65.9K
CodeProject 正在变化。 阅读更多。
Home

Active Directory 对象选择器控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.45/5 (18投票s)

2004年4月26日

CPOL

1分钟阅读

viewsIcon

226712

downloadIcon

2271

一个用于在 Active Directory 中选择对象的 Windows 控件。

Picker control test app

引言

一个用于在您的 Active Directory 中选择对象的基本的 Windows 控件库。

背景

我参与过几个 Active Directory 项目,并且经常需要一个“选择器”工具来选择 AD 层次结构中的对象。我决定自己编写一个,并将其封装在一个 Windows 控件库中。

示例用法

将控件添加到 Visual Studio .NET 中的 Windows Forms 控件列表中,然后将控件拖动到 Windows Form 上。控件将自动获取您的 Active Directory 根路径,并开始构建它找到的对象的层次树。

private void AddTreeNodes(TreeNode node)
{
    Cursor.Current = Cursors.WaitCursor;
    treeView1.BeginUpdate();
    adh = new ADHelper();
    adh.GetChildEntries((string)node.Tag);
    IDictionaryEnumerator enumerator = adh.Children.GetEnumerator();

    // append children
    while (enumerator.MoveNext())
    {
        TreeNode childNode = new TreeNode((string)enumerator.Key);
        childNode.Tag = enumerator.Value; // ADsPath
        node.Nodes.Add(childNode);


        // specific object types
        if (!alExceptions.Contains(node.Text))
            childNode.ImageIndex =
                SetImageIndex(enumerator.Key.ToString().Substring(0,2));
        else
            childNode.ImageIndex = 3; // computer image
    }
    treeView1.EndUpdate();
    Cursor.Current = Cursors.Default;
}

AddTreeNodes() 仅接受一个参数,即父 TreeNode 对象。然后它将继续添加它找到的每个子对象。与 Microsoft 的 ADSI 编辑工具类似,该控件显示一个加号来指示节点是否有一个或多个子节点。

返回 ADsPath

每次在层次结构中选择一个节点时,ADsPath 公有属性都会更新,以反映到该对象的完全限定路径(例如:LDAP://OU=DEV,OU=US,DC=CORPORATE,DC=MYDOMAIN,DC=COM)。

public void GetChildEntries(string adspath)
{
    if (adspath.Length > 0)
        entry = new DirectoryEntry(adspath);
    else
        entry = new DirectoryEntry();

    foreach (DirectoryEntry childEntry in entry.Children)
    {
        _htChildren.Add(childEntry.Name, childEntry.Path);
    }
}
private void treeView1_AfterSelect(object sender, 
      System.Windows.Forms.TreeViewEventArgs e)
{
    _adspath = (string)e.Node.Tag;
}

兼容性

该控件已在 Windows 2000/XP/2003 上进行了测试。如果安装了 Microsoft Active Directory 客户端扩展,它应该适用于 Windows 9x/NT。

历史

  • 版本 1.0 - 2004 年 4 月 22 日 - 第一个发布版本。
  • 版本 1.1 - 2004 年 4 月 28 日 - 添加了对象类型的图像支持。
© . All rights reserved.