1
我想創建一個Sub,將一個事件連接到一個函數 在此之前,我想要刪除舊的事件。刪除舊處理程序並連接新的處理程序內部Sub
這是我到目前爲止,我知道它一定有什麼東西在這個方向 但我不斷收到錯誤 BC30577:「AddressOf」操作數必須是一個方法(沒有括號)的名稱。
Delegate Sub DelegateType()
Private Sub ConnectButtonWithEvent(ByRef Button As CommandButton, ByRef newFunctionAdres As DelegateType)
Static OldEvent As DelegateType
Static OldButton As CommandButton
If Not OldButton Is Nothing Then
RemoveHandler OldButton.Click, AddressOf OldEvent
End If
AddHandler Button.Click, AddressOf newFunctionAdres
OldEvent = AddressOf newFunctionAdres
OldButton = Button
End Sub
兩件事情 - 不正確的地址獲取傳遞給你的'AddHandler'聲明擺在首位?你測試過了嗎?其次,按鈕的簽名不像您爲DelegateType委託子指定的那樣。 – Paul 2014-10-10 08:38:25
第一:不,我甚至不能編譯這個。對於第二個:我已經試過了:公共委託子委託類型(ByVal發件人爲System.Object,ByVal e爲System.EventArgs)在另一個嘗試中,我已經刪除了Add/RemoveHandler中的AddressOf函數,但編譯器告訴我它不能將Delagate類型轉換爲System.Eventhandler。 – 2014-10-10 08:52:00
我也嘗試將newFunctionAdres作爲Eventhandler傳遞。這適用於向按鈕添加新事件,但我無法存儲此事件處理程序,因此我可以在下次調用時將其從按鈕中刪除。 – 2014-10-10 09:08:56