📄 form1.cs
字号:
#endregion
#region Atributes
BVA.ActiveDirectory.Navigator.Objects.RootNode rootNode = null;
#endregion
#region Event Handlers
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
/// <summary>
/// This method handles the load of the form.
/// </summary>
/// <param name="sender">Default Param.</param>
/// <param name="e">Default Param.</param>
private void Form1_Load(object sender, System.EventArgs e)
{
}
/// <summary>
/// This method handles the Load Tree Button Click.
/// </summary>
/// <param name="sender">Default Param.</param>
/// <param name="e">Default Param.</param>
private void btnLoadTree_Click(object sender, System.EventArgs e)
{
try
{
WaitCursor();
LoadTreeRoot();
DefaultCursor();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
/// <summary>
/// This Method handles the click of a treeview item.
/// </summary>
/// <param name="sender">Default Param.</param>
/// <param name="e">Default Param.</param>
private void trvAD_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
try
{
ExtTreeNode selectedNode = (ExtTreeNode)e.Node;
switch (selectedNode.NodeType)
{
case(BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Root):
{
if (this.rootNode == null)
{
throw new Exception("Root Node not loaded!!! Please click Load Tree.");
}
LoadRootNodes(this.rootNode, e.Node);
break;
}
case(BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Container):
{
if (selectedNode.Value!=null)
{
LoadContainerNode(selectedNode);
}
break;
}
case(BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.OrganizationalUnit):
{
if (selectedNode.Value!=null)
{
LoadOUNode(selectedNode);
}
break;
}
case(BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.User):
{
if (selectedNode.Value!=null)
{
LoadUserNode(selectedNode);
}
break;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
#endregion
#region Methods
#region Interface Methods
private void WaitCursor()
{
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
}
private void DefaultCursor()
{
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
}
#endregion
#region Tree Methods
/// <summary>
/// This method loads the root node of the tree.
/// </summary>
private void LoadTreeRoot()
{
DateTime t1 = DateTime.Now;
this.trvAD.Nodes.Clear();
ExtTreeNode root = new ExtTreeNode("Root Nodes",string.Empty, BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
this.trvAD.Nodes.Add(root);
root.Nodes.Clear();
this.rootNode = BVA.ActiveDirectory.Navigator.Business.AdManager.GetRootNode(this.txtAdDomain.Text,this.txtAdUser.Text,this.txtAdPass.Text);
if (this.rootNode!=null)
{
ExtTreeNode rooti = new ExtTreeNode(this.rootNode.Name,string.Empty, BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Root);
root.Nodes.Add(rooti);
}
else
{
throw new Exception("Root Node not found!!!");
}
this.statusBarQueryTime.Text = "Query Time: " + ((TimeSpan)DateTime.Now.Subtract(t1)).TotalSeconds.ToString("##0.00") + " secs";
}
/// <summary>
/// This method loads all children nodes of the root node of the tree.
/// </summary>
/// <param name="r">Root Node of the AD tree.</param>
/// <param name="tr">Roots Node of the TreeView.</param>
private void LoadRootNodes(BVA.ActiveDirectory.Navigator.Objects.RootNode r, TreeNode tr)
{
DateTime t1 = DateTime.Now;
tr.Nodes.Clear();
ExtTreeNode ct = new ExtTreeNode ("Containers",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(ct);
foreach(BVA.ActiveDirectory.Navigator.Objects.Container c in r.Containers)
{
ExtTreeNode tri = new ExtTreeNode (c.Name,c.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Container);
ct.Nodes.Add(tri);
}
ExtTreeNode outr = new ExtTreeNode ("Organizational Units",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(outr);
foreach(BVA.ActiveDirectory.Navigator.Objects.OrganizationalUnit ou in r.OrganizationalUnits)
{
ExtTreeNode tri = new ExtTreeNode (ou.Name,ou.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.OrganizationalUnit);
outr.Nodes.Add(tri);
}
ExtTreeNode grt = new ExtTreeNode ("Groups",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(grt);
foreach(BVA.ActiveDirectory.Navigator.Objects.Group g in r.Groups)
{
ExtTreeNode tri = new ExtTreeNode (g.Name,g.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Group);
grt.Nodes.Add(tri);
}
ExtTreeNode uc = new ExtTreeNode ("Users",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(uc);
foreach(BVA.ActiveDirectory.Navigator.Objects.User u in r.Users)
{
ExtTreeNode tri = new ExtTreeNode (u.UserName,u.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.User);
uc.Nodes.Add(tri);
}
this.statusBarQueryTime.Text = "Query Time: " + ((TimeSpan)DateTime.Now.Subtract(t1)).TotalSeconds.ToString("##0.00") + " secs";
}
/// <summary>
/// This method loads all children nodes in a container node.
/// </summary>
/// <param name="tr">Node to be loaded.</param>
private void LoadContainerNode(ExtTreeNode tr)
{
DateTime t1 = DateTime.Now;
BVA.ActiveDirectory.Navigator.Objects.Container r = BVA.ActiveDirectory.Navigator.Business.AdManager.GetContainer(tr.Value);
tr.Nodes.Clear();
ExtTreeNode ct = new ExtTreeNode ("Containers",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(ct);
foreach(BVA.ActiveDirectory.Navigator.Objects.Container c in r.Containers)
{
ExtTreeNode tri = new ExtTreeNode (c.Name,c.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Container);
ct.Nodes.Add(tri);
}
ExtTreeNode outr = new ExtTreeNode ("Organizational Units",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(outr);
foreach(BVA.ActiveDirectory.Navigator.Objects.OrganizationalUnit ou in r.OrganizationalUnits)
{
ExtTreeNode tri = new ExtTreeNode (ou.Name,ou.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.OrganizationalUnit);
outr.Nodes.Add(tri);
}
ExtTreeNode grt = new ExtTreeNode ("Groups",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(grt);
foreach(BVA.ActiveDirectory.Navigator.Objects.Group g in r.Groups)
{
ExtTreeNode tri = new ExtTreeNode (g.Name,g.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Group);
grt.Nodes.Add(tri);
}
ExtTreeNode uc = new ExtTreeNode ("Users",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(uc);
foreach(BVA.ActiveDirectory.Navigator.Objects.User u in r.Users)
{
ExtTreeNode tri = new ExtTreeNode (u.UserName,u.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.User);
uc.Nodes.Add(tri);
}
this.statusBarQueryTime.Text = "Query Time: " + ((TimeSpan)DateTime.Now.Subtract(t1)).TotalSeconds.ToString("##0.00") + " secs";
}
/// <summary>
/// This method loads an Organizational Unit node.
/// </summary>
/// <param name="tr">Node to be loaded.</param>
private void LoadOUNode(ExtTreeNode tr)
{
DateTime t1 = DateTime.Now;
BVA.ActiveDirectory.Navigator.Objects.OrganizationalUnit r = BVA.ActiveDirectory.Navigator.Business.AdManager.GetOrganizationalUnit(tr.Value);
tr.Nodes.Clear();
ExtTreeNode ct = new ExtTreeNode ("Containers",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(ct);
foreach(BVA.ActiveDirectory.Navigator.Objects.Container c in r.Containers)
{
ExtTreeNode tri = new ExtTreeNode (c.Name,c.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Container);
ct.Nodes.Add(tri);
}
ExtTreeNode outr = new ExtTreeNode ("Organizational Units",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(outr);
foreach(BVA.ActiveDirectory.Navigator.Objects.OrganizationalUnit ou in r.OrganizationalUnits)
{
ExtTreeNode tri = new ExtTreeNode (ou.Name,ou.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.OrganizationalUnit);
outr.Nodes.Add(tri);
}
ExtTreeNode grt = new ExtTreeNode ("Groups",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(grt);
foreach(BVA.ActiveDirectory.Navigator.Objects.Group g in r.Groups)
{
ExtTreeNode tri = new ExtTreeNode (g.Name,g.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Group);
grt.Nodes.Add(tri);
}
ExtTreeNode uc = new ExtTreeNode ("Users",string.Empty,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.Other);
tr.Nodes.Add(uc);
foreach(BVA.ActiveDirectory.Navigator.Objects.User u in r.Users)
{
ExtTreeNode tri = new ExtTreeNode (u.UserName,u.Id,BVA.ActiveDirectory.Navigator.Objects.Auxiliary.ObjectTypes.User);
uc.Nodes.Add(tri);
}
this.statusBarQueryTime.Text = "Query Time: " + ((TimeSpan)DateTime.Now.Subtract(t1)).TotalSeconds.ToString("##0.00") + " secs";
}
private void LoadUserNode(ExtTreeNode tr)
{
DateTime t1 = DateTime.Now;
BVA.ActiveDirectory.Navigator.Objects.User r = BVA.ActiveDirectory.Navigator.Business.AdManager.GetUser(tr.Value);
tr.Nodes.Clear();
this.txtName.Text = r.UserName;
this.txtObjectType.Text = "AD User";
this.txtEmail.Text = r.Email;
this.chkEnabled.Checked = r.Enabled;
this.statusBarQueryTime.Text = "Query Time: " + ((TimeSpan)DateTime.Now.Subtract(t1)).TotalSeconds.ToString("##0.00") + " secs";
}
#endregion
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -