在当前的项目中,我有两个应用程序基本上做同样的事情。在第一个应用程序的 UI 中,我开发了一个继承 TreeView 控件的类。我使用了 DrawMode 属性的 OwnerDrawsAll 值,并自定义了 TreeView 的外观。在应用程序 1 中,它运行良好,我非常高兴。几个月来我没有遇到任何问题,并且在那段时间经常使用它。
在第二个应用程序中,我必须进行相同的修改,因此我使用了相同的自定义 TreeView 类。在应用程序 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 编译的库中。
请帮忙!我不想失去迄今为止所做的工作!
上海