如何让自动完成在单行文本框中工作,并能够覆盖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
改为KeyDown