/ / Use las extensiones reactivas para armonizar y simplificar las condiciones de Control.Enabled = true / false? - Winforms, eventos, manejo de eventos, system.reactive

Use las extensiones reactivas para armonizar y simplificar las condiciones de Control.Enabled = true / false? - Winforms, eventos, manejo de eventos, system.reactive

¿Es posible, o más precisamente, cómo es?es posible utilizar RX.Net para escuchar un número y una variedad diferente de controles (WinForms) ".TextChanged / .RowsChanged / .SelectionChanged y cada vez que se cumpla una condición (ControlA.Text no está vacío, ControlB.RowsCount> 0, etc. ) habilitar ese botón de DoSomething.

Lo pregunto porque actualmente tenemos una larga.La instrucción if / then en cada uno de estos eventos "y su mantenimiento si la condición cambia, debido al código duplicado, es bastante propensa a errores y por eso, si es posible, creo que sería bueno tomar el flujo de eventos y poner la condición en un solo lugar.

¿Alguien ha hecho eso?

Respuestas

0 para la respuesta № 1

Puedes usar Observable.FromEventPattern en combinación con patrones de unión, con Observable.When, Observable.Y, y Observable.Then, para crear observables que se activarán en función de varias condiciones, como combinaciones de eventos. Por ejemplo, considera mi respuesta aquí: Extensiones reactivas para .NET (Rx): Actúe una vez que se hayan completado todos los eventos


0 para la respuesta № 2

Deberías poder usar .FromEventPattern() para crear observables para cada uno de esos eventos y luego usar CombineLatest() para hacer su lógica en el estado general actual y determinar si su botón debe estar habilitado, en un solo lugar.