验证后的UserControl事件

时间:2009-07-03 12:00:53

标签: winforms validation

我正在尝试在我的WinForms应用程序中实现此模式(我不喜欢它,但它是客户要求的):

  • 我在DetailsControl中编辑对象的属性(由我们开发的UserControl),当用户试图离开控件时,它会被验证并保存
  • 如果它无效,或者在保存期间发生错误,则不能保留控件(它在列表/详细信息部分中)

我的想法是:

  • on Validating,我检查我的对象是否正常,否则我取消了该事件
  • on Validated,我保存我的对象,如果发生错误,我取消事件

不幸的是,Validated不可取消,并且在Validating / Validated之前触发Leave。验证后是否有可取消的事件,这会阻止失去焦点?

如果没有,我会将所有逻辑移到Validating中,但我希望将正式验证与保存错误分开。

1 个答案:

答案 0 :(得分:1)

article列出了引发Validated / Validating事件时的常规事件顺序。验证后没有可取消的事件。我认为如果没有一些额外的魔力,你就不走运了。

如果您真的担心使用该类的人可能会在Validating事件处理程序中对自己进行其他验证检查,则可以使用另一个自定义的Cancelabe验证事件来扩展该类。然后,您可以在调用base.OnValidating之前在OnValidating期间引发此自定义事件。