我有一个包含一些有用项目的组合框。操作员可以从该列表中选择项目。我还想让操作员键入一些不在选择列表中的文本。
如果操作员指示他完成了对文本框的编辑,例如按回车键,我想检查操作员是否选择了一个项目,或者键入了一些新文本。
从获得所选项目或从组合框输入文本的最佳方式我了解到我可以阅读文本框文本,如下所示:
var operatorText = comboBox1.Txt;
但是我应该使用什么事件?
如果我键入一些文本并按enter键,则不会引发SelectedIndexChanged我听到一个";ding";当我编辑完文本框后按enter键时,应该会发生一些事件,但是哪一个?
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(