Winforms 使用反应式扩展来协调&;简化控制。启用=真/假条件?

Winforms 使用反应式扩展来协调&;简化控制。启用=真/假条件?,winforms,events,event-handling,system.reactive,Winforms,Events,Event Handling,System.reactive,是否可能,或者更准确地说,如何使用RX.Net来侦听大量不同种类的(WinForms)控件“.TextChanged/.RowsChanged/.SelectionChanged事件,以及何时一个条件已满(ControlA.Text不为空,ControlB.RowsCount>0等),启用该剂量测量按钮 我这样问是因为目前我们在每个事件的处理程序中都有一个很长的if/then语句,如果由于重复的代码导致条件发生变化,那么就维护它们,这就是为什么,如果可能的话,我认为最好将事件流放在一个地方 有人

是否可能,或者更准确地说,如何使用RX.Net来侦听大量不同种类的(WinForms)控件“.TextChanged/.RowsChanged/.SelectionChanged事件,以及何时一个条件已满(ControlA.Text不为空,ControlB.RowsCount>0等),启用该剂量测量按钮

我这样问是因为目前我们在每个事件的处理程序中都有一个很长的if/then语句,如果由于重复的代码导致条件发生变化,那么就维护它们,这就是为什么,如果可能的话,我认为最好将事件流放在一个地方


有人这样做了吗?

您应该能够使用
.FromEventPattern()
为每个事件创建可观察的对象,然后使用
CombineTest()
对当前总体状态进行逻辑分析,并确定是否应启用按钮,在一个地方。

您可以将Observable.FromEventPattern与连接模式结合使用,使用Observable.When、Observable.And和Observable。然后,创建根据不同条件触发的Observable,如事件组合。例如,考虑一下我的答案:

使用RX真的是多余的。您不应该在视图本身中执行此操作。使用按钮的
Enabled
属性进行数据绑定的属性如
CandoMething
的viewmodel要容易得多。我现在没有时间详细说明这一点。也许以后,或者其他人?@GertArnold谢谢,但这是一个WinForms应用程序,模型/视图/视图模型之间没有分离。当然还有其他的解决方案和变通办法,但据我所知,如果在某一时刻恰好满足一个条件,那么结合不同事件的流并采取行动似乎是RX的自然选择,因此问题就来了。。这是否有效,为什么(不)以及理想情况下如何有效。