将Rx框架用于具有大量过滤器控件的Winforms应用程序?

时间:2015-01-14 16:39:12

标签: c# winforms event-handling system.reactive

我有一个带有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

0 个答案:

没有答案