estoy en el borde de la locura ...interacción entre dos controles de usuario
En la aplicación de realidad estoy construyendo, estoy tratando con dos controles agregados dinámicamente que deben interactuar entre sí, pero reduje el problema a un ejemplo tan simple como lo puedo hacer con los controles cargados estáticamente, y aún presenta el mismo problema: una NullReferenceException al invocar al delegado. Aquí está el quid:
de control 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
de control 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
Si pongo un punto de interrupción en la línea de Control2 donde se asigna el delegado Control1, puedo paso y ver cómo se establece en el objeto Control1. Sin embargo, cuando se desencadena el evento btnButton_Click, el valor de _delClicked ha vuelto a Nothing.
Cualquier ayuda sería muy apreciada. ¡Gracias!
Tienes razón, debería ser en init en lugar de la carga, pero todavía tiene el mismo resultado. – Blumer