说我有多个组合框彼此叠放。
**[_______] Combobox #1
[_______] Combobox #2
[_______] Combobox #3
[_______] Combobox #4
[_______] Combobox #5
[_______] Combobox #6
[_______] Combobox #7**
如果在任何时候我从一个组合列表中选择下拉列表,该组合列表是从一些值列表中馈送的(为简单起见,假设数字1-5),则该组合框选择的值将禁用该组合框下面的#个组合框。因此,如果组合框#1选择值为“ 3”,则组合框#2,#3和#4将被禁用或具有一些关联的值(如“ 0”),以知道它现在已经消失了。然后,我可以继续说我选择了组合框5,并选择了一个值“ 2”,最后看起来像这样:
**[___3___] Combobox #1**
[_______] Combobox #2
[_______] Combobox #3
[_______] Combobox #4
**[___2___] Combobox #5**
[_______] Combobox #6
[_______] Combobox #7
(禁用组合框2、3、4、6、7)。我还需要重置该过程,这意味着更改所选值将更改并相应地更新禁用框的数量。
我想要实现的代码中的粗略想法:
private void combobox#_SelectedValueChanged(object sender, Eventargs e)
{
for (x in combobox#.SelectedValue)
combobox[#+x].Enabled = false;
}
有什么想法使这成为可能吗?谢谢!理想的情况是在C#winform中,但如果可以提供更好的解决方案,则可以使用WPF。
答案 0 :(得分:1)
将组合框放入列表或数组中,例如:
var comboBoxes = new List<ComboBox> { comboBox1, comboBox2, comboBox3, ... };
然后像您一样使用代码,但是使用数组索引而不是尝试编写名称。请记住,组合框(或任何其他引用类型)的集合只是对象引用的集合。它们的成本不高。