【发布时间】:2018-04-17 17:14:44
【问题描述】:
我正在尝试修复 MFC CEdit 控件中的验证错误。目前,验证在OnChange 事件处理程序中执行。但这不起作用,因为它会在用户完成输入之前验证数据。
因此,相反,我尝试在 OnKillFocus 事件处理程序中进行验证。如果验证失败,那么我使用GotoDlgCtrl() 将焦点返回到包含无效数据的编辑框。当我调用GotoDlgCtrl() 时,kill focus 事件再次触发,我处于无限循环中。
所以,我想处理一个在控件失去焦点之前触发的事件,这样如果我确定数据无效,我可以阻止焦点离开,而是让用户输入正确的数据。
我知道我在某个地方看到过验证事件,但那可能是在 .Net 世界中。但它提供了我正在寻找的功能。
【问题讨论】:
-
在你走得太远之前,请阅读 Microsoft 的 Raymond Chen 的这篇文章:WM_KILLFOCUS is the wrong time to do field validation。
-
MFC 为dialog data validation 提供了一个框架,您可以对其进行自定义以满足您的特定要求。