我正在做一个小小的计算机信息工具。现在我正在做用户帐户。我用可用的用户填充了一个组合框。
ManagementObjectSearcher mosAccounts = new ManagementObjectSearcher("SELECT * FROM Win32_Account");
foreach (ManagementObject moUA in mosAccounts.Get())
{
comboBox4.Items.Add(moUA["Name"].ToString());
}
然后我显示它们:
private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
{
ManagementObjectSearcher mosAccounts = new ManagementObjectSearcher("SELECT * FROM Win32_Account");
foreach (ManagementObject moUA in mosAccounts.Get())
{
lblDescriptionUA.Text = "Description: " + moUA["Description"].ToString();
if (moUA["Domain"] != null)
{
lblDomain.Text = "Domain: " + moUA["Domain"].ToString();
}
else
lblDomain.Text = "Domain: Not Available";
if (moUA["InstallDate"] != null)
{
lblInstallDateUA.Text = "Install Date: " + moUA["InstallDate"].ToString();
}
else
lblInstallDateUA.Text = "Install Date: Not Available";
lblLocalAccount.Text = "Local Account: " + moUA["LocalAccount"].ToString();
if (moUA["SID"] != null)
{
lblSID.Text = "SID: " + moUA["SID"].ToString();
}
else
lblSID.Text = "SID: Not Available";
if (moUA["SIDType"] != null)
{
lblSIDType.Text = "SID Type: " + moUA["SIDType"];
}
else
lblSIDType.Text = "SID Type: Not Available";
if (moUA["Status"] != null)
{
lblStatusUA.Text = "Status: " + moUA["Status"].ToString();
}
else
lblStatusUA.Text = "Status: Not Available";
}
}
但是每当我从组合框中选择一个用户时,标签就会疯狂,显示出如此多的信息,然后进行切换。就像他们连续显示有关所有用户的信息一样。有什么我想念的吗?
其他信息:我在工作。有很多域用户。组合框显示了它们。 Mybe因为所有的域用户。我做了一个选项,只显示本地用户,但同样的问题。
答案 0 :(得分:0)
但是每当我从组合框中选择一个用户时,标签就会疯狂,显示出如此多的信息,然后进行切换。就像他们正在显示连续所有用户的信息一样。
是的 - 因为正好您的代码所说的内容:
// Every time you select a user...
private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
{
// Find all the information about all users...
ManagementObjectSearcher mosAccounts =
new ManagementObjectSearcher("SELECT * FROM Win32_Account");
// Iterate over all those users and display it
foreach (ManagementObject moUA in mosAccounts.Get())
{
...
}
}
代码完全符合您的要求。现在,为什么为什么连接了这样的事件处理程序?想想当所选索引发生变化时,实际想要实现的目标。您真的想要找到单个所选用户吗?如果是这样,大概您只需更改您在ManagementObjectSearcher
中使用的查询,然后找到单个结果,而不是迭代所有结果。