如何让自动完成在单行文本框中工作,并能够覆盖KeyPress事件

本文关键字:工作 事件 KeyPress 覆盖 文本 单行 | 更新日期: 2023-09-27 18:18:42

我正在尝试在我的winforms应用程序中使用文本框的AutoComplete功能。

文本框用于向仪器发送一些GPIB/SCPI命令。所以在我得到自动完成的想法之前,它工作得很好,但是有了自动完成,KeyPress事件不再工作了。

我写的代码是这样的:
//AutoComplete collection
AutoCompleteStringCollection _commandHistory = new AutoCompleteStringCollection();
public Form1() //Constructor
{
    InitializeComponent();
    _commandHistory.AddRange(new string[3]{"*IDN?", "*RST", ":READ?"});
    tbCommandLine.AutoCompleteSource = AutoCompleteSource.CustomSource;
    tbCommandLine.AutoCompleteCustomSource = _commandHistory;
    tbCommandLine.AutoCompleteMode = AutoCompleteMode.Append;
}

这是我为KeyPress事件定义的

private void tbCommandLine_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Return)
    {
        SendCommand(tbCommandLine.Text.Trim()); //Send Command
        _commandHistory.Add(tbCommandLine.Text.Trim()); //Store command in autocomple source
        tbCommandLine.Text = String.Empty; //clear textbox
    }
}

添加了自动补全功能后,如果我按回车键或者输入自动补全源中的内容,文本框中的文本将被高亮显示,而回车键不起任何作用

如何让自动完成在单行文本框中工作,并能够覆盖KeyPress事件

解决将KeyPress改为KeyDown

相关文章: