我希望能够在显示列表时正确更新Combobox列表项。
我在DropDownList模式下使用所有可用的串口填充Combobox。我订阅了#34; Device Changed"事件并在事件处理程序中更新此ComboBox。如果当前选择的端口不再可用(即,用户拔掉USB串行端口),那么我希望当前选择通过执行combobox1.Text =""来显示空白字符串。或combox1.SelectedIndex = -1。这在大多数情况下都非常有用,除非在用户单击Combobox并显示列表时进行更新。
例如,如果当前列表包含" Com1"," Com2"和SelectedIndex设置为-1(因此当前选择显示为空白)并且用户单击Combobox以打开列表,并且不会向下移动鼠标以选择任何内容。然后在用户再次单击以关闭列表之前,他/她拔掉Com1。现在更新被触发,我可以看到列表更新现在只显示" Com2"并且当前所选文本显示为空白。
然而,当用户再次点击Combobox(没有从列表中选择任何内容)来关闭列表时,.Net将选择Com2(这是列表中的第一项),而不是将SelectedIndex保留为-1并且当前选择为空白。我不明白那里发生了什么。更奇怪的是,它似乎在第一次将当前所选文本保留为空白,并且在启动我的应用程序后第一次或第二次默认情况下仅默认选择第一项。
如果我将控件配置为DropDown模式,那么在用户关闭列表后它确实将当前选择保留为空白,但SelectedIndex设置为0.虽然这看起来像某种bug(或功能)。 net,我对这个解决方案还不错,但任何人都可以告诉我,我做的事情是否正常,未来它会如何运作?是否有关于如何在列表显示时正确更新组合框列表的文档?