检查当前组合框中的值是否包含在该组合的项中

本文关键字:组合 包含 是否 检查 | 更新日期: 2023-09-27 18:09:35

我有Control - ComboBox,这是语言列表。我在该组合中添加了语言,右键单击该组合->属性->选择属性,然后->项目(…)包含。我一行一行地添加了一些语言。

问题是用户可以通过在comboBox中写入内容来手动更改,而不仅仅是他可以在那里选择的内容。所以我需要看看当前写在comboBox中的内容是否包含在Items中。我已经将这个函数添加到事件" validation ":

private bool ValidatingComboBox(ComboBox sender)
{
   if (sender.SelectedValue != null)
   {
      if (sender.Items.Contains(sender.SelectedValue))
      {
         errorProvider.SetError(sender, "");
         return true;
      }
      else
      {
         errorProvider.SetError(sender, "No such thing in list!");
         return false;
      }
   }
   else
   {
      errorProvider.SetError(sender, "No such thing in list!");
      return false;
   }
}

但是由于某种原因,当我在comboBox中写"English"时,它仍然会给我一个错误,尽管英语在Items中。但是,当我在下拉列表中用鼠标选择语言来更改语言时,它不会报告错误。

我做错了什么?

检查当前组合框中的值是否包含在该组合的项中

你可以防止用户在第一时间输入…如果他不会打字,就不需要这种验证。试试这个

this.comboBoxType.DropDownStyle = ComboBoxStyle.DropDownList;