我有一个带有DataGridView的Winforms应用程序(.net 3.5),它显示来自慢/复杂查询的数据。它还有很多(~15个控件)的组合框,文本框,复选框,用于过滤网格视图。
现在它为这些过滤器控件提供了简单的Winform事件处理程序(xxxx_DropDownClosed,xxxx_TextChanged等方法用于处理用户输入,BackGroundWorker用于刷新数据网格视图asynced)。
如何在Rx框架中实现它?使用Rx会有更好的方法来处理这种情况吗?
背后的表格代码:(查看)
public event EventHandler<Filter1EventArgs> Filter1Changed;
public event EventHandler<Filter2EventArgs> Filter2Changed;
public event EventHandler<Filter3EventArgs> Filter3Changed;
.....
private void Filter1_SelectIndexchanged(object sender, EventArgs e)
{
var h = Filter1Changed;
if (h != null)
{
var value = .....
h(sender, new Fitler1EventArgs(value));
}
}
.......
// Repeat for all filters
Presenter.cs
_view.Filter1Changed += OnFilter1Changed;
_view.Filter2Changed += OnFilter2Changed;
_view.Filter3Changed += OnFilter3Changed;
......
private void OnFilter1Changed(boject sender, Filter1EventArgs e)
{
_filter.Filter1 = e.Value;
RefreshView();
UpdateDropdownlistItems("Filter1"); // exclude filter1
}
......
// Repeat for all filters