【发布时间】:2018-12-27 00:38:00
【问题描述】:
假设我有多个组合框堆叠在一起。
**[_______] Combobox #1
[_______] Combobox #2
[_______] Combobox #3
[_______] Combobox #4
[_______] Combobox #5
[_______] Combobox #6
[_______] Combobox #7**
如果我在任何时候从某个值列表(为简单起见,假设数字 1-5)提供的组合框中选择下拉列表,则组合框选择的值将禁用它下方的组合框。因此,如果 Combobox #1 选择了值“3”,则 Combobox #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 提供更好的解决方案,则对它开放。
【问题讨论】:
-
this.Controls.Find(controlName)应该能帮到你。 -
啊,这是我一直在寻找的一件事。那么本质上 controlName 是否能够在 for 循环中调用不同的组合框?
-
您是否动态生成字段?显示您的代码
-
当您不想在
selectedValueChanged事件中编写大量代码时,就会出现这种情况。只有这个 - 您需要使用组合框值矩阵编写控制器类。并且当任何值发生变化时,停止事件处理并根据矩阵设置值,然后恢复事件处理 -
@T.S.矩阵和控制器听起来是正确的想法。介意分享一个简单的例子吗?