处理文本框中的自动完成。不同于按回车

Posted

技术标签:

【中文标题】处理文本框中的自动完成。不同于按回车【英文标题】:Handling autocompletion in text boxes. differently from pressing enter 【发布时间】:2011-12-27 08:51:30 【问题描述】:

当设置了 Windows.Forms.TextBox 的 AutoCompleteCustomSource 属性时,在输入文本框时会出现变体列表。 可以使用鼠标指向并单击其中一种变体,也可以使用上下按钮进行选择并按 Enter。 您也可以随时按 Enter。

问题的要点是,当使用鼠标进行选择时,会引发 KeyDown (KeyUp, KeyPress) 事件,就像在键盘上按下 Enter 键一样。 如何确定真正发生了什么并使用鼠标光标处理选择并按不同的 Enter 键?

【问题讨论】:

【参考方案1】:

我通过跟踪文本框的鼠标和键盘事件解决了这个问题。生成的功能类似于浏览器地址栏。我现在无法找到源代码,但它是围绕 MouseDown、MouseUp、KeyDown、KeyUp 的基本逻辑,同时将它们的值存储在变量中。

【讨论】:

请挖掘细节。我已经尝试跟踪这些事件,但是当单击自动建议列表时,文本框不会生成鼠标事件(MouseUp、MouseDown、MouseClick)。 这些鼠标事件的去向对我来说有点神秘。很可能它们被临时可见列表控件消耗(据我所知,我们无法控制)。

以上是关于处理文本框中的自动完成。不同于按回车的主要内容,如果未能解决你的问题,请参考以下文章

文本框中的自动完成 json

如何仅在多个自动完成文本框中的前 2 个字符之后才开始自动完成?

将输入文本框中的文本替换为所选自动完成选项中的文本

如何在自动完成文本框中没有按钮的情况下回发?

如何从自动完成文本框中单击名称?

如何动态更改 C# 组合框或文本框中的自动完成条目?