2 回答
TA贡献1828条经验 获得超3个赞
您可以使用该sender对象来确定哪个组合框触发了该事件。此外,您可以使用元组和 LINQ 来清理它:
private void combobox_SelectedIndexChanged(object sender, EventArgs e)
{
List<(ComboBox Cmb, string Text)> items = new List<(ComboBox, string)
{
(cmpItem, "Item"), (cmbPBrand, "Brand"), (cmbPPart, "Part No."),
(cmbPDesc, "Description"), (cmbPMan, "Manufacturer"), (cmbPCar, "Car"),
(cmbPYr, "Year"), (cmbPMade, "Made In")
};
List<string> srchtxt = (new[] { items.First(i => i.Cmb == sender).Text })
.Concat(items.Where(i => i.Cmb != sender).Select(i => i.Text))
.ToList();
List<ComboBox> cmb = items
.Where(i => i.Cmb != sender)
.Select(i => i.Cmb)
.ToList();
cmbValue(srchtxt, cmb);
}
TA贡献1813条经验 获得超2个赞
我会将所有组合框放在一个列表中,并将其存储在 from 的成员变量中。然后,您可以将 srchtxt 中的名称放入组合框 Tag 属性中。然后循环遍历所有组合框,并通过使用生成 srchtxt new ComboBox[] { current }.Union(comboboxes.Where(x => x != current)).Select(x => x.Tag as string).Union(new string [] { current.Text }).ToList()
,您将获得一个列表,该列表看起来与您在帖子中硬编码的列表非常相似。
- 2 回答
- 0 关注
- 174 浏览
添加回答
举报