2016-08-22 120 views
-1

我想在動畫結束時調用方法。我使用這種說法:調用帶參數的方法

AddHandler anim.Completed, AddressOf anim_completed 

但我想anim_completed子是與參數。任何想法如何做到這一點?

+1

只需將參數添加到子...我不明白。此外,你是方法名稱需要工作。上駱駝案件。 –

+0

你爲什麼會認爲我沒有嘗試?無論如何,如果我將參數添加到子我得到這個:'公共小組anim_completed(目標作爲橢圓)'沒有簽名兼容委託'委託小組EventHandler(發件人爲對象,e作爲EventArgs)「。 – Eae

+0

[已完成](https://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.completed(v = vs.110).aspx)是一個事件,需要一個處理程序方法擁有固定的簽名。你不能改變這一點。 – Clemens

回答

1

簡單的解決方案。使用匿名事件處理程序,那麼您將能夠直接訪問Ellipse對象。

Dim target As Ellipse = Nothing 

AddHandler anim.Completed, Sub() 
           If target IsNot Nothing Then 

           End If 
          End Sub 
+0

'使用匿名事件處理程序'這是要求問題,而不是'刪除'他們......有一件事叫'WithEvents',爲您處理所有這些,添加和刪除處理程序... – Codexer

+0

如何做到這一點? – Eae

+0

你需要嗎? :)如果你發現你這樣做,那麼你可以在這裏找到答案:http://stackoverflow.com/questions/1362204/how-to-remove-a-lambda-event-handler –

0

您的委託/方法需要與事件具有相同的簽名。但在這個事件中,你可以打電話給你想要的東西。

AddHandler anim.Completed, AddressOf onAnimCompleted 

Sub onAnimCompleted(sender As Object, e As EventArgs) 

    Dim target As New Ellipse 

    anim_completed(target) 

End Sub 
+0

但我想通過一個現有的橢圓 – Eae

+0

@Eae不像我的例子那樣創建一個新的橢圓,你可以得到一個現有的橢圓。 –