私は狂気の危機に瀕しています...
私が実際に構築しているアプリケーションでは、相互に対話する必要がある 2 つの動的に追加されたコントロールを扱っていますが、問題を可能な限り単純な例に減らしました。コントロールが静的に読み込まれ、デリゲートを呼び出すときに 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
Control1 デリゲートが割り当てられている Control2 の行にブレークポイントを配置すると、ステップスルーして、Control1 オブジェクトに設定される様子を確認できます。ただし、btnButton_Click イベントが発生すると、_delClicked の値は Nothing に戻ります。
どんな助けでも大歓迎です。ありがとう!