Vb.net Can';无法获取AddHandler和AddressOf以使用UpdatePanel

Vb.net Can';无法获取AddHandler和AddressOf以使用UpdatePanel,vb.net,button,updatepanel,addressof,addhandler,Vb.net,Button,Updatepanel,Addressof,Addhandler,我正在构建一个动态构建UpdatePanel、面板、DDL和按钮的页面。每个UpdatePanel都有一个按钮。我正在做一些测试,尝试在点击按钮后更改一个值。当我一步一步通过一个按钮后的代码点击页面加载,然后调用按钮点击功能。但它并没有改变我创建的标签的值 Private Function BuildSaveButton() As Button Dim bt As New Button bt.CssClass = "saveButton" bt.Text = "Save" Add

我正在构建一个动态构建UpdatePanel、面板、DDL和按钮的页面。每个UpdatePanel都有一个按钮。我正在做一些测试,尝试在点击按钮后更改一个值。当我一步一步通过一个按钮后的代码点击页面加载,然后调用按钮点击功能。但它并没有改变我创建的标签的值

Private Function BuildSaveButton() As Button
  Dim bt As New Button
  bt.CssClass = "saveButton"
  bt.Text = "Save"
  AddHandler bt.Click, AddressOf StateSaved
  Return bt
End Function

Private Sub StateSaved(ByVal sender As Object, ByVal e As EventArgs)

  nameSelected.Text = "Worked!"
End Sub

理想情况下,我的目标(因为我有嵌套的UpdatePanel)是让页面只更新特定UpdatePanel中的内容,而不是整个页面。

我非常确定,在添加处理程序之前,必须为控件分配所有者

由于要将按钮添加到特定面板,只需将面板作为参数传入即可

我假设updatepanel是您创建的一个类,它继承了某个使用controls属性的类

Private Sub SubAddButtonToPanel(f as UpdatePanel) As Button
  Dim bt As New Button
  bt.CssClass = "saveButton"
  bt.Text = "Save"
  f.Controlls.Add(bt)
  AddHandler bt.Click, AddressOf Me.StateSaved
  Return bt
End Sub

Private Sub StateSaved(ByVal sender As Object, ByVal e As EventArgs)

  nameSelected.Text = "Worked!"
End Sub

作为预防措施,我还在调用StateSaved()之前添加了“Me.”。

在处理时不要忘记删除处理程序。