2016-08-22 20 views
-1

アニメーションが終了したときにメソッドを呼び出す必要があります。私はこのステートメントを使用しています:パラメータでメソッドを呼び出す

AddHandler anim.Completed, AddressOf anim_completed 

しかし、私は、パラメータを持つanim_completedサブしたいです。任意のアイデアをどのように行うには?

+1

サブメニューにパラメータを追加するだけで、わかりません。また、メソッド名には作業が必要です。アッパーラクテルケース。 –

+0

なぜ私はそれを試していないと思いますか?とにかく、私はサブに私がこれを取得する場合: 'Public Sub anim_completed(Target as Ellipse)'は代理人 'Delegate Sub EventHandler(送信者オブジェクトとしてe、EventArgsとして)と互換性のある署名を持っていません。 – Eae

+0

[完了](https://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.completed(v = vs.110).aspx)は、ハンドラメソッド固定された署名で。あなたはそれを変更することはできません。 – Clemens

答えて

1

シンプルなソリューション。匿名イベントハンドラを使用すると、楕円オブジェクトに直接アクセスできます。

Dim target As Ellipse = Nothing 

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

           End If 
          End Sub 
+0

'Use Anonymous Event Handler'これは問題を「削除」していないときにそれを要求しています...あなたのためにこれをすべて処理し、ハンドラ... – 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私の例のように新しい楕円を作成する代わりに、既存の楕円を得ることができます。 –

関連する問題