0

在当前的项目中,我有两个应用程序基本上做同样的事情。在第一个应用程序的 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 编译的库中。

请帮忙!我不想失去迄今为止所做的工作!

上海

4

1 回答 1

0

我也注意到了这种行为。在我的情况下通过替换Exit Sub来修复它Return

于 2013-06-06T09:29:21.480 回答