2012-06-15 2 views
1

ObservableCollectionstrings으로 데이터 바인딩되는 ComboBox이 있습니다. ComboBox도 편집 할 수 있으므로 직접 값을 입력하거나 목록에서 하나를 선택할 수 있습니다. 제가 실행하고있는 문제는 SelectedItem의 색인은 에 자신의 값을 입력했을 때 마지막으로 선택한 항목의 색인 인 것으로 보이지만, IsTextSearchEnabled을 true로 설정하면 -1이됩니다.편집 가능한 콤보 박스를 선택할 때 이벤트를 발생시키는 방법은 무엇입니까?

누군가가 자신의 값을 입력 한 다음 이전에 선택했던 ComboBox에서 항목을 선택하기로 결정하면 인덱스가 변경되지 않으므로 SelectionChange 이벤트는 실행되지 않습니다. 이 상황에서 어떻게하면 발사 할 수 있습니까?

답변

1

시험이 ... 난이 도움이 되었으면 좋겠 :

Dim oldSEL As String = "" 

'always checking while you move your mouse over the combobox (when altering selection) and using the keyboard to (alter selection) 
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.MouseMove, ComboBox1.KeyPress 
    Dim currentSEL As String = ComboBox1.SelectedText 
    If Not (oldSEL = "" And currentSEL = oldSEL) Then 
     fire() 
     oldSEL = currentSEL 
    End If 
End Sub 

Private Sub fire() 
    Trace.Write("text selected changed") 
End Sub 

당신이 원하는대로 모든 콤보 상자를 변경해야합니다.

+0

이것은 좋은 제안입니다. 나는 이것을 몇 가지 이유로 정확히 사용하지는 않지만, 어떻게 할 수 있을지 생각하게되었습니다. 대신 MouseLeave 이벤트를 사용하고 있습니다. 하지만 고마워! – cost

+0

이 아이디어를 사용하여 사용자 정의 이벤트 및 인터페이스를 사용하는 것과 같은 더 나은 코드를 만들 수 있습니다. 하지만 지금은 당신에게 달렸습니다. 나는 그 사람들에게 익숙하지 않습니다. 하하. – jestrange