ich am Rande des Wahnsinns bin ...Interaktion zwischen zwei Bedienelemente
In der Anwendung, die ich tatsächlich bauen, ich bin mit zwei dynamisch hinzugefügt Kontrollen zu tun, die miteinander interagieren müssen, aber ich habe das Problem auf ein So-wie-ich-kann-es-Beispiel mit den Steuerelementen reduziert, die statisch geladen werden, und es stellt immer noch das gleiche Problem dar: eine NullReferenceException beim Aufrufen des Delegaten. Hier ist der Kern:
Steuerung 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
Steuerung 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
Wenn ich einen Haltepunkt auf der Linie des Control2 setzen, wo die Control1 Delegierten zugewiesen sind, kann ich Schritt durch und beobachten, wie es im Control1-Objekt eingestellt wird. Wenn jedoch das Ereignis "btnButton_Click" ausgelöst wird, ist der Wert von _delClicked auf "Nothing" zurückgesetzt worden.
Jede Hilfe würde sehr geschätzt werden. Vielen Dank!
Du hast Recht zu gehen, sollte es statt Last in init sein, aber es hat immer noch das gleiche Ergebnis. – Blumer