На ръба съм на лудостта...
В приложението, което всъщност изграждам, имам работа с две динамично добавени контроли, които трябва да си взаимодействат помежду си, но намалих проблема до толкова прост, колкото мога да го направя пример като контролите са статично заредени и все още представлява същия проблем: 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 се е върнала обратно към нищо.
Всяка помощ ще бъде високо оценена. Благодаря!