private void cmbUsers_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbUsers.SelectedText == "<All Users>")
{
//do stuff
}
else if (cmbUsers.SelectedText == "dbo")
{
//do stuff
}
else if (cmbUsers.SelectedText == "INFORMATION_SCHEMA")
{
//do stuff
}
else if (cmbUsers.SelectedText == "sys")
{
//do stuff
}
}
我有一个表格,上面有一个组合框和一个列表框。
当用户从组合框列表中选择时,应显示所有列表框记录。但是当用户选择dbo时,只应在列表框中显示dbo.abc记录。当用户选择INFORMATION_SCHEMA记录时,应显示INFORMATION_SCHEMA.abc。我的英语不是很好。我希望你们都理解我的问题。
请帮帮我。
答案 0 :(得分:1)
有很多方法可以解决这样的问题。
我的第一次尝试应该是创建Dictionary<string, List<string>>
并将所有键添加到Combobox。他们的钥匙是你的&#34; dbo.abc&#34;等等,值是相应的记录
在Combobox索引更改事件上,然后清除列表框并将相应列表中的所有项目添加到其中。
对于所有项目,您可以添加一个&#34;所有列表&#34;组合框中的项目。然后,在测试中查看密钥是否存在于字典中,如果它不存在,您可以在foreach
上yourDictionary.Values
并将它们全部添加到列表框中。
这可能是我做的方式。但是还有很多其他的,也许你应该开始改进你的C#语言,然后再提出这样的琐碎问题:)
编辑您的示例(假设您的列表框是cmbList):
private Dictionary<string, List<string>> _items;
private void cmbUsers_SelectedIndexChanged(object sender, EventArgs e)
{
var cmbText = cmbUsers.SelectedText;
cmbList.Items.Clear();
if (_items.ContainsKey(cmbText)
{
cmbList.Items.AddRange(_items[cmbList]);
}
else // default : show all items
{
foreach (var val in _items.Values)
{
cmbList.Items.AddRange(val);
}
}
}