다음을 통해 공유


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 이벤트 프로시저에 중단점을 설정한 후 코드를 실행하여 이벤트 발생 위치를 확인합니다. 그런 다음 필요에 따라 코드를 수정합니다.

참고 항목

개념

Visual Basic 6.0 사용자를 위한 ComboBox 컨트롤