C#Active Directory应用程序在填充文本框时滞后
本文关键字:滞后 文本 填充 Directory 应用程序 C#Active | 更新日期: 2023-09-27 18:28:15
我的任务是创建一个最终的应用程序,该应用程序将与active directory通信并获取所有当前用户。我们与所有新用户一起维护一个旧的excel表,问题是当任何人离开组织时,他们不会被删除,所以添加了新用户,但旧用户也留在excel表中,导致excel表的增长,所以现在管理层希望有一个桌面应用程序,他们可以使用它来搜索用户并获取他/她的信息,但我的应用程序滞后了,例如,选择了用户john,john的电话号码显示为123-456-7890,现在我在下拉列表中选择了最后一个用户Joe,所有信息都发生了变化,但电话文本框仍然包含值123-456-7890。我在这里做错了什么,如果有任何建议或变通办法,我们将不胜感激。
private void ShowUserInformation(SearchResult rs)
{
if (rs.GetDirectoryEntry().Properties["samaccountname"].Value != null)
username.Text = rs.GetDirectoryEntry().Properties["samaccountname"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["givenName"].Value != null)
FirstName.Text = rs.GetDirectoryEntry().Properties["givenName"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["initials"].Value != null)
MiddleName.Text = rs.GetDirectoryEntry().Properties["initials"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["sn"].Value != null)
LastName.Text = rs.GetDirectoryEntry().Properties["sn"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["mail"].Value != null)
email.Text = rs.GetDirectoryEntry().Properties["mail"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["personalTitle"].Value != null)
title.Text = rs.GetDirectoryEntry().Properties["personalTitle"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["company"].Value != null)
company.Text = rs.GetDirectoryEntry().Properties["company"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["l"].Value != null)
city.Text = rs.GetDirectoryEntry().Properties["l"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["st"].Value != null)
state.Text = rs.GetDirectoryEntry().Properties["st"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["co"].Value != null)
country.Text = rs.GetDirectoryEntry().Properties["co"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["memeberOf = IS Team"].Value != null)
Groups.Text = rs.GetDirectoryEntry().Properties["memeberOf = IS Team"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["postalCode"].Value != null)
postalcode.Text = rs.GetDirectoryEntry().Properties["postalCode"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["telephoneNumber"].Value != null)
phone.Text = rs.GetDirectoryEntry().Properties["telephoneNumber"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["streetAddress"].Value != null)
address.Text = rs.GetDirectoryEntry().Properties["streetAddress"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["department"].Value != null)
department.Text = rs.GetDirectoryEntry().Properties["department"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["description"].Value != null)
descriptions.Text = rs.GetDirectoryEntry().Properties["description"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["employeeID"].Value != null)
employee.Text = rs.GetDirectoryEntry().Properties["employeeID"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["mobile"].Value != null)
mobile.Text = rs.GetDirectoryEntry().Properties["mobile"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["accountExpires"].Value != null)
accountexpires.Text = rs.GetDirectoryEntry().Properties["accountExpires"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["homeDrive"].Value != null)
homedrive.Text = rs.GetDirectoryEntry().Properties["homeDrive"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["homeDirectory"].Value != null)
homedirectory.Text = rs.GetDirectoryEntry().Properties["homeDirectory"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["whenCreated"].Value != null)
WhenCreate.Text = rs.GetDirectoryEntry().Properties["whenCreated"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["lastLogoff"].Value != null)
lastloggedoff.Text = rs.GetDirectoryEntry().Properties["lastLogoff"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["badPasswordTime"].Value != null)
badpassword.Text = rs.GetDirectoryEntry().Properties["badPasswordTime"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["whenCreated"].Value != null)
WhenCreate.Text = rs.GetDirectoryEntry().Properties["whenCreated"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["whenChanged"].Value != null)
whenchanged.Text = rs.GetDirectoryEntry().Properties["whenChanged"].Value.ToString();
听起来您选择的第二个用户可能没有设置电话号码,因此它不会更新字段。你能在这行上加一个断点吗:
if (rs.GetDirectoryEntry().Properties["mail"].Value != null)
email.Text = rs.GetDirectoryEntry().Properties["mail"].Value.ToString();
看看他们的mail
属性是否真的设置好了?
为了修复滞后的文本框vaules,我只添加了一个else语句,这就成功了。
if (rs.GetDirectoryEntry().Properties["telephoneNumber"].Value != null)
phone.Text = rs.GetDirectoryEntry().Properties["telephoneNumber"].Value.ToString();
else phone.Text = "";