验证列表控件就地编辑

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 编程的基础知识。

以上是关于验证列表控件就地编辑的主要内容,如果未能解决你的问题,请参考以下文章

如何打造Android自定义的下拉列表框控件

MFC做表格的控件

在 WinForms 列表框/列表视图控件中显示大量字符串

编辑列表框数据

求一文本编辑器控件

C# Winform自定义一个控件,一个按钮按下会显示ComboBox一样的下拉列表