Visual Basic 6.0 사용자를 위한 ComboBox 컨트롤 변경 이벤트
업데이트: 2007년 11월
Visual Basic 6.0에서는 ComboBox 컨트롤의 텍스트 입력 부분에서 텍스트를 수정할 때 컨트롤의 Change 이벤트가 발생합니다. 그러나 컨트롤의 목록 부분에서 항목을 선택하는 경우나 프로그래밍 방식으로 목록에 있는 항목의 텍스트를 변경하는 경우에는 Change 이벤트가 발생하지 않습니다.
프로젝트가 Visual Basic 2008로 마이그레이션될 때 ComboBox 컨트롤의 Change 이벤트는 Visual Basic 2008ComboBox 컨트롤의 TextChanged 이벤트로 매핑됩니다. 그러나 TextChanged 이벤트의 동작은 Change 이벤트의 동작과 다릅니다. 따라서 이러한 차이로 인해 코드에서 예상치 못한 결과가 발생할 수 있습니다.
Visual Basic 2008TextChanged 이벤트는 다음과 같은 이유로 텍스트가 변경될 때마다 발생합니다.
텍스트 입력 부분이 수정된 경우
목록에서 항목이 선택된 경우
프로그래밍 방식으로 목록 항목이 수정된 경우
Add 메서드가 호출된 경우
다음 예제에서는 동작의 차이점을 설명합니다.
' Visual Basic 6.0
Private Sub Form_Load()
' Does not raise the Change event.
Combo1.AddItem "A"
End Sub
Private Sub Form_Click()
' Does not raise the Change event.
Combo1.List(0) = "B"
End If
' Visual Basic
Private Sub Form1_Load()
' Raises the TextChanged event.
ComboBox1.Items.Add("A")
End Sub
Private Sub Form1_Click(ByVal sender As System.Object, ByVal _
e As System.EventArgs)
' Uses the SetItemString method from the VB6 compatibility library;
' there is no equivalent method in Visual Basic.
' Raises the TextChanged event.
Microsoft.VisualBasic.Compatibility.VB6. _
SetItemString(ComboBox1, ComboBox1.Items.Count, "B")
End Sub
후속 작업
- TextChanged 이벤트 프로시저에 중단점을 설정한 후 코드를 실행하여 이벤트 발생 위치를 확인합니다. 그런 다음 필요에 따라 코드를 수정합니다.