我有一个WinForms表单,它有一个gridview和几个组合框和文本框。这些组合框和文本框用于过滤gridview中显示的数据。
Combobox1
列出Column1
中的所有不同值,Combobox2
列出了网格视图的Column2
中的所有不同值,等等。
如何实现以下功能?
更改ComboboxN
(或文本框)后,它不仅会过滤网格视图(select (first page)... from ... where Column1 = {Combobox selected value}
),还会刷新所有其他组合框的项目列表。问题是
Rx框架是否是更好的工具来实现它?
答案 0 :(得分:0)
如果ActiveControl
与当前事件控件不同,您可以检查ActiveControl
属性,然后不应该重新分配列表。
例如,您有两个组合框Combobox1和Combobox2。现在,您想要将组合框从一个填充到另一个。
private void combobox1_SelectedValueChanged(object sender, EventArgs e)
{
if (this.ActiveControl != combobox2)
FillCombobox2()
}
private void combobox1_SelectedValueChanged(object sender, EventArgs e)
{
if (this.ActiveControl != combobox1)
FillCombobox1()
}
这是您可以尝试的第一种方法。
但是,我有一个问题,你为什么这样做。如果选择了Combobox1值,则应重新填充Combobox2。但是,为什么你在Combobox2值变化时再次重新填充Combobox1?
顺便说一句,如果你想在填充后在其他组合框中回放所选的值。那么您可以在任何变量中保留先前选定的值,然后在填充 p>后进行设置
var val = combobox2.SelectedValue;
FillCombobox2();
combobox2.SelectedValue = val;
您可以按照我上面的建议检查ActiveControl
来避免循环。