调用带参数的方法

问题描述:

我想在动画结束时调用方法。我使用这种说法:调用带参数的方法

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

简单的解决方案。使用匿名事件处理程序,那么您将能够直接访问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://*.com/questions/1362204/how-to-remove-a-lambda-event-handler –

您的委托/方法需要与事件具有相同的签名。但在这个事件中,你可以打电话给你想要的东西。

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不像我的例子那样创建一个新的椭圆,你可以得到一个现有的椭圆。 –