当前位置: 代码迷 >> VB Dotnet >> 请问AddHandler 和 RemoveHandler 的有关问题
  详细解决方案

请问AddHandler 和 RemoveHandler 的有关问题

热度:61   发布时间:2016-04-25 02:11:03.0
请教AddHandler 和 RemoveHandler 的问题
各位大大好 小弟在使用AddHandler 的指令上 时 发生的一些问题 所以想请教一下各位大哥

就是我写了两个副程式



Sub Combin()

 AddHandler BTN.Click,Sub() Test(DDL,SSP)

end Sub



当我按了BTN这个按钮后 会触发Test的副程式

然后我另外写了一个副程式要去解除这个功能




Sub UnCombine()

 RemoveHandler BTN.Click,Sub() Test(DDL,SSP)

End Sub



但现在发生的问题是 我似乎无法这样写 去解除BTN 这个按钮触发Test 的副程式

我叫了UnCombine 的副程式后 按了BTN的按钮 它还是继续在呼叫Test的副程式

此外 编译器这边跑出了一些警告讯习

Lambda 运算式将不会从这个事件处理常式中移除,请将Lambda 运算式指派给变数,然后使用该变树来加入和移除事件

这是什么意思啊?????   请有经验的大大协助我解决问题 谢谢
------解决思路----------------------
添加,删除匿名方法注册的事件,只是个“花子”,展示下能实现,但最终不建议这么干,你本来就是要添加和删除的,就别用匿名了,给自己找麻烦呢么。

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        AddHandler Button3.Click, AddressOf MyButtonClick
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        RemoveHandler Button3.Click, AddressOf MyButtonClick
    End Sub

    Private Sub MyButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
        MessageBox.Show("test")
    End Sub
End Class


是可以移除的