在当前项目中,我有两个基本相同的应用程序。在第一个应用程序的UI中,我开发了一个继承TreeView控件的类。我使用了DrawMode属性的OwnerDrawsAll值,并自定义了TreeView的外观。在应用程序1中,它运行良好,我不能更高兴。我几个月没有遇到任何问题,并且在那个时候经常使用它。
在第二个应用程序中,我必须进行相同的修改,因此我使用相同的自定义TreeView类。在app 2中,在TreeView进入DrawNode事件的第一次机会中,一切正常,直到我到达DrawMode事件处理程序的“Exit Sub”行。如果我尝试单步执行它,应用程序会完全崩溃而不会发出警告。因为它发生在“Exit Sub”语句中,所以我不能将它包含在Try / Catch中。启动DrawNode事件的语句包含在Try / 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
这些应用程序有两个不同之处。 App 1是一个程序,编译为x86作为目标平台。 App 2是一个名为SolidWorks的程序的加载项,因此是一个.dll,编译的目标平台是AnyCPU。自定义TreeView类位于为AnyCPU编译的库中。
请帮忙!我不想失去迄今为止所做的工作!
SH
答案 0 :(得分:0)
我也注意到了这种行为。通过将Exit Sub
替换为Return