Я на грани безумия ...
В приложении, которое я на самом деле создаю, я имею дело с двумя динамически добавляемыми элементами управления, которые должны взаимодействовать друг с другом, но я сократил проблему до простого, как я могу сделать - пример со статически загружаемыми элементами управления, и он все еще представляет ту же проблему: исключение NullReferenceException при вызове делегата. Вот суть:
Контроль 1
Partial Class Control1
Inherits System.Web.UI.UserControl
Private _delClicked As System.Delegate
Public WriteOnly Property UpdateLabel() As System.Delegate
Set(ByVal value As System.Delegate)
_delClicked = value
End Set
End Property
Protected Sub btnButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnButton.Click
Dim aObj(0) As Object
aObj(0) = 1
_delClicked.DynamicInvoke(aObj)
End Sub
End Class
Контроль 2
Partial Class Control2
Inherits System.Web.UI.UserControl
Protected WithEvents Control1 As New Control1
Delegate Sub ChangeLabel(ByVal int As Integer)
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
Dim delChangeLabel As New ChangeLabel(AddressOf UpdateLabel)
Me.Control1.UpdateLabel = delChangeLabel
End Sub
Private Sub UpdateLabel(ByVal int As Integer)
lblLabel.Text = "Value is now " & int
End Sub
End Class
Если я поставлю точку останова на линии Control2, где назначен делегат Control1, я могу пройти и посмотреть, как она устанавливается в объекте Control1. Однако при возникновении события btnButton_Click значение _delClicked возвращается к значению Nothing.
Любая помощь будет принята с благодарностью. Спасибо!