组合框:如果操作员键入文本,然后按enter键,则该事件



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

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

从获得所选项目或从组合框输入文本的最佳方式我了解到我可以阅读文本框文本,如下所示:

var operatorText = comboBox1.Txt;

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

如果我键入一些文本并按enter键,则不会引发SelectedIndexChanged
  • 操作员键入的每个字符都会引发TextUpdate,但如果按enter键则不会
  • 每次字符更改都会引发TestUpdated,即使在选择之后也是如此,但如果按下回车键,则不会
  • 我听到一个";ding";当我编辑完文本框后按enter键时,应该会发生一些事件,但是哪一个?

    吉米给出了正确的答案。订阅事件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做出反应:如果操作员开始打字,但发现自己犯了错误,他应该可以做其他事情,例如查找正确的文本来键入

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

    必须输入吗?如果只是在用户从文本字段移动到新字段时,您可以使用LostFocus(https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.control.lostfocus?view=net-5.0(

    相关内容

    • 没有找到相关文章

    最新更新