2013-12-10 1 views
1

VB2010 삭제 된 다음 여러 프로세스에서 수동으로 채워지는 ComboBox가 있습니다. 콤보 상자의 항목 수가 레이블을 업데이트하고 싶습니다. 항목 수가 변경되거나 콤보 상자의 내용이 변경 될 때 해고 될 이벤트를 찾는 데 문제가 있습니다. 이런 유형의 이벤트에 사용할 수있는 이벤트가 있습니까? TextChanged 시도했지만 모든 경우에 작동하지 않는 것.콤보 상자의 항목 수가 변경 될 때 발생하는 이벤트

+0

CBO는 어떻게 채워 집니까? 바인딩되어 있습니까? 아니면 그냥'Items.Add'를 사용합니까? – Plutonix

+0

Items.Add를 통해 수동으로 추가합니다. – sinDizzy

답변

3

BindingList (Of String)에 ComboBox를 바인딩하고 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

+1 그리고 BindingList는 다른 객체에 의해 생성되고 관리 될 수 있다는 것을 언급해야합니다 : RO Prop 또는 함수로 제공되는'myCBO.DataSource = otherObj.CBOListOfSomething' – Plutonix

+0

이제는 다른 모든 객체를 변경해야합니다. 직접 ComboBox 대신 BindingList를 수정하는 코드? – sinDizzy

+0

... 아니면 혼자두고 공공 메서드를 만들고 다른 것이 CBO를 변경할 때마다 해당 메서드를 호출합니다. – Plutonix

관련 문제