/ / Використовуйте реактивні розширення для гармонізації та спрощення Control.Enabled = true / false conditions? - winforms, події, обробка подій, system.reactive

Використовуйте реактивні розширення для гармонізації та спрощення Control.Enabled = true / false conditions? - winforms, події, обробка подій, system.reactive

Чи це можливо, точніше як це відбуваєтьсяможна використовувати RX.Net для прослуховування кількох та різних різновидів елементів керування (WinForms) ".TextChanged / .RowsChanged / .SelectionChanged подій і кожного разу, коли одна умова заповнена (ControlA.Text isn" t порожній, ControlB.RowsCount> 0 і т.д. ) дозволити цю кнопку DoSomething.

Я запитую, тому що зараз ми маємо тривалий часякщо / then statement в кожному з цих подій обробники та їх підтримка, якщо зміна стану, через дубльований код, є досить схильною до помилок і тому, якщо можливо, я думаю, було б приємно взяти потік подій і поставити умов в одному місці.

Хто-небудь це зробив?

Відповіді:

0 для відповіді № 1

Ви можете використовувати Observable.FromEventPattern у поєднанні з приєднуваними шаблонами, з Observable. Коли, Observable.And і Observable.Then, створювати observables, які будуть запускати в залежності від різних умов, таких як комбінації подій. Наприклад, розгляньте мою відповідь тут: Реактивні розширення для .NET (Rx): вживати заходів після завершення всіх подій


0 для відповіді № 2

Ви повинні мати можливість використовувати .FromEventPattern() щоб створити спостережувані для кожного з цих подій, а потім використовувати CombineLatest() зробити вашу логіку поточним загальним станом і визначити, чи потрібно вмикати вашу кнопку в одному місці.