VB.NET 구성 요소에서 발생하는 이벤트를 처리하는 클래스를 인스턴스화하는 일부 VB6 코드가 있습니다. VB6은 매우 간단합니다 : 이벤트 핸들러 객체가 init 메소드의 범위를 벗어 살고있다VB.NET 코드에서 VB.NET 이벤트 처리
private m_eventHandler as new Collection
...
public sub InitSomething()
dim handler as EventHandler
set handler = new EventHandler
m_eventHandler.Add handler
...
m_engine.Start
end sub
하는 것으로 (이 컬렉션에 저장되는 이유입니다). m_engine.Start
은 VB.NET 구성 요소가 이벤트를 발생시키는 프로그램의 지점을 나타냅니다. (요구 된 바와 같이)
실제 이벤트 핸들러 :
Private WithEvents m_SomeClass As SomeClass
Private m_object as Object
...
Private Sub m_SomeClass_SomeEvent(obj As Variant)
Set obj = m_object
End Sub
참고 EventHandler
의 인스턴스가 생성 될 때 m_object
초기화된다.
이벤트를 발생시키는 VB.NET 코드도 간단하다 :
Public ReadOnly Property SomeProp() As Object
Get
Dim obj As Object
obj = Nothing
RaiseEvent SomeEvent(obj)
SomeProp = obj
End Get
End Property
내 문제를 내가 디버그 VB6 프로그램, 처음 InitSomething
가 호출되는 경우, 이벤트 것이다 하지 (VB6 이벤트 핸들러는 입력되지 않습니다.) 이후에 InitSomething
에 대한 호출이 가능합니다.
디버거 외부에서 프로그램을 실행할 때 예상했던대로 작동합니다. 이 시점에서, 나는 이것이 내가 걱정해야만하는 것인지 확실하지 않다.
VB.NET이 비주얼 스튜디오 코드 변환 도구를 사용하여 VB6에서 변환되었지만 이후에는 수동으로 정리되었습니다.
실제 이벤트 핸들러와 핸들링 오브젝트의 선언을 표시 할 수 있습니까? ("WithEvents"가있는 것)? –