gpt4 book ai didi

asp.net - 两个用户控件之间的交互

转载 作者:行者123 更新时间:2023-12-04 21:27:35 25 4
gpt4 key购买 nike

我处于疯狂的边缘...

在我实际构建的应用程序中,我正在处理需要相互交互的两个动态添加的控件,但我已将问题简化为一个尽可能简单的示例在静态加载控件的情况下,它仍然存在相同的问题:调用委托(delegate)时出现 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 委托(delegate)的 Control2 行上放置一个断点,我可以单步执行并观察它在 Control1 对象中的设置。但是,当 btnButton_Click 事件触发时,_delClicked 的值又变回了 Nothing。

任何帮助将不胜感激。谢谢!

最佳答案

我的猜测是您正在失去对回发的控制。动态添加的控件在回发时丢失。当然,您重新创建了一个执行相同操作的控件,但这并不意味着您将能够捕获单击事件。但是控件没有在回发之间传递它的 View 状态。

看到这个article关于如何去做

关于asp.net - 两个用户控件之间的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1013929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com