验证列表控件就地编辑
Posted
技术标签:
【中文标题】验证列表控件就地编辑【英文标题】:Validating List Control In-Place Edit 【发布时间】:2018-05-07 07:03:25 【问题描述】:在我的列表控件中,我有适当的编辑控件。
在编辑控件的 killfocus 事件中,我正在验证文本。
我的要求是在单击 listcontrol 的滚动条时,我应该使用旧文本进行验证(它的行为应该像 esc 键)
在我的应用程序中,当单击 listcontrol 的滚动条时,会触发编辑控件的 killfocus 事件,并且正在使用当前文本验证文本。
如何验证旧文本?
谢谢。
【问题讨论】:
WM_KILLFOCUS is the wrong time to do field validation. @IInspectable 何时对列表控件中的就地编辑控件进行验证? 您的问题有一个答案可以准确解释何时进行输入验证。 在那个链接中,他们提到应该在单击确定按钮时完成对话框验证,但就我而言,我无法从该链接中得到任何想法。 该链接还解释了在WM_KILLFOCUS
处理期间完成输入验证会导致什么问题。这些问题也适用于您的情况。我还评论说,您已经收到了一个答案,显示了一个可行的输入验证通知。
【参考方案1】:
当您收到LVN_BEGINLABELEDIT
时,您也会收到LVN_ENDLABELEDIT 通知。根据您的需要返回 TRUE 或 FALSE。
【讨论】:
要检查焦点是否在列表控件的滚动条上,我尝试了下面的代码,但 pScroll 始终为 NULL。 CListCtrl* pList = ((CListCtrl*)GetParent()); CWnd* pScroll = PList->GetScrollBarCtrl(SB_VERT);如何获取列表控件的滚动条窗口句柄? 滚动条嵌入在列表控件中,与列表控件本身没有不同的焦点。 如何获取列表控件除标题和滚动条外的矩形? GetClientRect!?你问的是基础。这不是讨论任何发展的论坛。请阅读 SO 的指导方针,并了解 Windows 编程的基础知识。以上是关于验证列表控件就地编辑的主要内容,如果未能解决你的问题,请参考以下文章