我有一段代码,其中表单上 DropDown 模式下的 ComboBox 有一个固定的唯一项的 ArrayList 作为其数据源;通常这对用户来说工作得很好,但很少会发生错误,即 SelectedIndex 无法找到与用户输入的 ComboBox 文本属性所表示的项目相对应的项目(即使它是合法项目)。
更具体地说,用户在 ComboBox 文本字段中键入合法条目作为文本并使用鼠标导航到另一个控件。文本字段继续显示条目,但稍后,当用户使用依赖于与正在显示的文本对应的 SelectedIndex 的方法提交更改时,SelectedIndex 不正确(有时)。
官方文档http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.text.aspx指出:
“将 Text 属性设置为 null 或空字符串 ("") 会将 SelectedIndex 设置为 -1。将 Text 属性设置为 Items 集合中的值会将 SelectedIndex 设置为该项目的索引。将 Text 属性设置为不在集合中的值使 SelectedIndex 保持不变。”
所以合法的文本条目应该将 SelectedIndex 移动到正确的数字。我知道我可以在任何重要的事情发生之前强制对事件处理程序进行一致性检查,但我想知道是什么导致了这个罕见的错误,它在文档面前飞了起来,以更好地理解 ComboBox 实际在做什么。我会很感激任何帮助。