Я на грани безумия...
В приложении, которое я на самом деле создаю, я имею дело с двумя динамически добавляемыми элементами управления, которые должны взаимодействовать друг с другом, но я сократил проблему до максимально простого примера. с элементами управления, загружаемыми статически, и по-прежнему возникает та же проблема: исключение 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.
Любая помощь будет принята с благодарностью. Спасибо!