2012-04-03 4 views
0

현재 프로젝트에서 필자는 본질적으로 동일한 작업을 수행하는 두 개의 응용 프로그램을 사용합니다. 첫 번째 응용 프로그램의 UI에서 TreeView 컨트롤을 상속하는 클래스를 개발했습니다. DrawMode 속성의 OwnerDrawsAll 값을 사용하고 TreeView의 모양을 사용자 지정했습니다. 앱 1에서는 멋지게 작동하며 더 기쁘게 생각할 수 없습니다. 나는 몇 달 동안 문제가 없었으며 그 시간에 자주 사용했다."Exit Sub"에서 VB.NET IDE 디버거가 종료됩니다.

두 번째 응용 프로그램에서 동일한 수정을해야하므로 동일한 사용자 지정 TreeView 클래스를 사용하고 있습니다. 응용 프로그램 2에서 첫 번째 기회 동안 TreeView 내 DrawMode 이벤트 처리기의 "끝내기 Sub"줄 때까지 모든 작동합니다 DrawNode 이벤트를 입력합니다. 단계별로 시도하면 앱이 경고없이 완전히 중단됩니다. "Exit Sub"문에서 발생하기 때문에 Try/Catch에 포함 할 수 없습니다. DrawNode 이벤트를 유발하는 문은 Try/Catch 블록에 포함되어 있지만 catch되지는 않습니다.

같은 결과로 내 DrawNode 이벤트 처리기의 모든 기능을 주석 처리했습니다. 아래에 코드가 포함되어 있습니다 :

Public Class TabularTreeView 
    Inherits System.Windows.Forms.TreeView 

Private Sub DrawMyNode(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawTreeNodeEventArgs) Handles MyBase.DrawNode 

    Try 
     'Draw the node as default 
     e.DrawDefault = True 

     '...commented out and still fails.... 

    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

End Sub '<---this statement is where the debugger fails! 

End Class 

두 가지 차이점이 있습니다. 응용 프로그램 1은 대상 플랫폼으로 x86으로 컴파일 된 프로그램입니다. App 2는 SolidWorks라는 프로그램 용 애드 인이므로 .dll이므로 컴파일 된 대상 플랫폼은 AnyCPU입니다. 사용자 정의 TreeView 클래스는 AnyCPU 용으로 컴파일 된 라이브러리에 있습니다.

도와주세요! 지금까지 완료된 작업을 잃고 싶지 않습니다!

SH

+0

내가 뭔가를 놓치지 않는 한, 나는 "End Sub"를 의미한다고 생각하지 않는 한. "Exit Sub"는 "End Sub"와 다른 의미를 가지고 있으며 제공된 소스에는 "Exit Sub"문이 포함되어 있지 않습니다. –

+0

출력 창의 내용을 문서화하십시오. –

답변

0

나는이 동작도 또한 알아 차렸다. 제 경우에는 고정되어 있습니다. Exit Sub에 의해 Return