Sono sull'orlo della follia ...Interazione tra due controlli utente
Nell'applicazione realtà sto costruendo, ho a che fare con due controlli dinamicamente aggiunto che hanno bisogno di interagire con l'altro, ma ho ridotto il problema a un esempio as-simple-as-can-it-it con i controlli caricati staticamente e presenta ancora lo stesso problema: una NullReferenceException quando si richiama il delegato. Ecco il succo del discorso:
controllo 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
controllo 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
Se metto un punto di interruzione sulla linea di Control2 in cui viene assegnato il delegato Control1, posso passo attraverso e guardarlo settare nell'oggetto Control1. Tuttavia, quando si attiva l'evento btnButton_Click, il valore di _delClicked è tornato a Nothing.
Qualsiasi aiuto sarebbe molto apprezzato. Grazie!
Hai ragione, dovrebbe essere in init invece di carico, ma ha ancora lo stesso risultato. – Blumer