В текущем проекте у меня есть два приложения, которые делают практически одно и то же. В пользовательском интерфейсе первого приложения я разработал класс, наследующий элемент управления TreeView. Я использовал значение OwnerDrawsAll свойства DrawMode и настроил внешний вид TreeView. В приложении 1 он отлично работает, и я очень доволен. У меня не было проблем с ним в течение нескольких месяцев, и я часто использовал его в то время.
Во втором приложении мне нужно внести те же изменения, поэтому я использую тот же пользовательский класс TreeView. В приложении 2 при первой возможности, когда TreeView входит в событие DrawNode, все работает нормально, пока я не доберусь до строки «Exit Sub» моего обработчика событий DrawMode. Если я попытаюсь пройти через это, приложение полностью вылетит без предупреждения. Поскольку это происходит в операторе «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
В этих приложениях есть два отличия. Приложение 1 — это программа, скомпилированная для x86 в качестве целевой платформы. Приложение 2 является надстройкой для программы SolidWorks и, таким образом, является .dll, скомпилированной целевой платформой AnyCPU. Пользовательский класс TreeView находится в библиотеке, скомпилированной для AnyCPU.
Пожалуйста помоги! Я не хочу потерять работу, которая была сделана до сих пор!
SH