gpt4 book ai didi

c# - 从自动完成建议列表中选择一个项目会引发带有 ENTER 键的 KeyDown 事件

转载 作者:太空狗 更新时间:2023-10-30 00:43:11 26 4
gpt4 key购买 nike

在 Winforms 中,我有一个 AutoCompleteMode 设置为 SuggestAppend 和 AutoCompleteCustomSource 集的文本框。当用户键入一些字母时,会显示建议列表。如果通过用鼠标单击此列表中的一个项目来选择它,包含文本框的表单的 KeyDown 事件将引发 ENTER 键。

是否有可能在使用鼠标选择建议的项目时不引发此事件?

最佳答案

自动完成功能有几个怪癖,这些怪癖是从其最初的设计用途(Internet Explorer 的地址框)继承而来的。这包括在您单击列表中的项目时发出 Enter 键。在IE的地址栏中回车,会导航到输入的URL。

您对此无能为力, native 界面 (IAutoComplete2) 几乎没有配置其工作方式的选项。它通过伪造 Windows 消息将击键插入文本框。这是您可以区分的一种方式,实际的键不会按下。您可以通过调用 GetKeyState() 来检查,如下所示:

    private void textBox1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyData == Keys.Enter && GetKeyState(Keys.Enter) < 0) {
Console.WriteLine("Really down");
}
}

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern short GetKeyState(Keys key);

关于c# - 从自动完成建议列表中选择一个项目会引发带有 ENTER 键的 KeyDown 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12055883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com