【问题标题】:An event that fires when number of items in combobox changes当组合框中的项目数更改时触发的事件
【发布时间】:2013-12-10 19:20:19
【问题描述】:

VB2010 我有一个 ComboBox,它被清除,然后由多个进程手动填充。我想用组合框中的项目数更新标签。当项目数量发生变化或组合框的内容发生变化时,我无法找到会被触发的事件。有没有可以用于此类事情的事件?我尝试了 TextChanged,但似乎不适用于所有情况。

【问题讨论】:

  • CBO 是如何组成的?他们是绑定还是你只是使用Items.Add
  • 我通过 Items.Add 手动添加。

标签: vb.net events combobox items


【解决方案1】:

我建议您将 ComboBox 绑定到 BindingList(Of String) 并为 ListChanged 事件添加句柄。

Private Sub Init()
    Me.list = New BindingList(Of String)
    Me.ComboBox1.DataSource = Me.list
    AddHandler Me.list.ListChanged, New ListChangedEventHandler(AddressOf Me._ListChanged)
End Sub

Private Sub _ListChanged(sender As Object, e As ListChangedEventArgs)
    'Update label
End Sub

Private list As BindingList(Of String)

【讨论】:

  • +1 应该提到 BindingList 可以由其他对象创建和维护:myCBO.DataSource = otherObj.CBOListOfSomething 作为 RO Prop 或函数提供
  • 好的,但现在我必须更改所有其他代码来修改 BindingList 而不是 ComboBox 直接正确吗?
  • ...或者您可以不理会它,创建一个公共方法,每当其他事情改变 CBO 时,他们只需调用该方法
  • 是的。您应该直接更新 BindingList 而不是 ComboBox。
猜你喜欢
  • 2016-01-07
  • 2016-06-06
  • 2019-05-01
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 2012-10-25
相关资源
最近更新 更多