我正在尝试在我的WinForms应用程序中实现此模式(我不喜欢它,但它是客户要求的):
我的想法是:
不幸的是,Validated不可取消,并且在Validating / Validated之前触发Leave。验证后是否有可取消的事件,这会阻止失去焦点?
如果没有,我会将所有逻辑移到Validating中,但我希望将正式验证与保存错误分开。
答案 0 :(得分:1)
此article列出了引发Validated / Validating事件时的常规事件顺序。验证后没有可取消的事件。我认为如果没有一些额外的魔力,你就不走运了。
如果您真的担心使用该类的人可能会在Validating事件处理程序中对自己进行其他验证检查,则可以使用另一个自定义的Cancelabe验证事件来扩展该类。然后,您可以在调用base.OnValidating之前在OnValidating期间引发此自定义事件。