加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 03:18:21 所属栏目:asp.Net 来源:网络整理
导读:我快要疯了…… 在我正在构建的应用程序中,我正在处理需要相互交互的两个动态添加的控件,但我已经将问题简化为一个简单的,因为我可以制作它的示例控件是静态加载的,它仍然存在同样的问题:调用委托时出现NullReferenceException.这是要点: 控制1 Partial Cl
我快要疯了……

在我正在构建的应用程序中,我正在处理需要相互交互的两个动态添加的控件,但我已经将问题简化为一个简单的,因为我可以制作它的示例控件是静态加载的,它仍然存在同样的问题:调用委托时出现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.

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

解决方法

我的猜测是你正在失去对回发的控制权.动态添加的控件会在回发中丢失.当然你重新创建一个控件来做同样的事情,但这并不意味着你将能够捕获点击事件.但是控件并没有在回发之间传递它的视图状态.

请参阅此article,了解如何执行此操作

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读