首页 > 解决方案 > ComboBox:如果操作员键入文本,然后按回车,则发生哪个事件

问题描述

我有一个包含一些有用项目的组合框。操作员可以从此列表中选择项目。我还想让操作员键入一些不在选择列表中的文本。

如果操作员指示他完成了对文本框的编辑,例如按回车键,我想检查操作员是否选择了一个项目,或者输入了一些新文本。

获取所选项目或从组合框中输入文本的最佳方式中,我了解到我可以像这样读取文本框文本:

var operatorText = comboBox1.Txt;

但是我应该使用什么事件?

我在编辑文本框后按 Enter 时听到“叮”的一声,所以应该发生一些事件,但是是哪一个?

标签: c#winformscombobox

解决方案


吉米想出了正确的答案。订阅事件Control.KeyDown(不是KeyUp!),检查哪个键被按下,如果你认为操作员已经完成编辑,SuppressKeyPress,防止“叮”

private void OnParameterKeyDown(object sender, KeyEventArgs e)
{
    ComboBox combo = (ComboBox)sender;
    if (e.KeyCode == Keys.Return)
    {
        this.ProcessSelectedText(combo.Text);
        e.SuppressKeyPress = true;
    }
}

我选择不对 LostFocus 做出反应:如果操作员开始打字,但发现他犯了错误,他应该能够做其他事情,例如查找要键入的正确文本

另一种方法可能是,如果操作员按下回车键,您可以将键入的文本添加到项目列表中,以便选择项目。缺点:项目列表可能会变得很大,并且在列表中看到输入错误会很麻烦。


推荐阅读