2013-05-19 18 views
6

私はすでにこれについていくつかのスレッドを読んでいますが、私の場合は解決方法がまだ分かりません。私は、Javaから来て、C#、私はアニメーションが完了したときに、リスナーを添付したい「System.EventHandler」タイプを「System.EventHandler <object>」に暗黙的に変換することはできません。ストーリーボードの完成

のほとんどは新しい:

myStoryBoard.Completed += new EventHandler(onMyStoryBoardCompleted); 

そして:

private void onMyStoryBoardCompleted(object sender, EventArgs e) 
{  
} 

そして私はタイトルにエラーが発生します。 「

no overload for 'onMyStoryBoardCompleted' matches delegate 'System.EventHandler<object>' 

は、だから、署名はEventHandlerの<object>と互換性がないようだと私はそれが互換性を持たせる方法を見つけることができませんでした、私もドン:

myStoryBoard.Completed += new EventHandler<object>(onMyStoryBoardCompleted); 

をしかし、私は得る:私が試しましたこのアプローチが正しいかどうかはわかりません。

私は

Understanding events and event handlers in C#

C# Dynamic template implicit conversion error from System.EventHandler to System.EventHandler<TEventArgs>

defining event handler for Tick event of DispatcherTimer in windows 8 app

しかし、まだこの場合の解決方法が見つからないをお読みください。

ありがとうございます。

+0

'myStoryBoard.Completed + =新しいEventHandler(onMyStoryBoardCompleted);は動作します – SLaks

+0

どのStoryBoardクラスを使用していますか? 'Timeline'が導出された場合、' Completed'はEventHandler型として定義する必要があります。つまり、これはエラーなしでコンパイルする必要があります。 –

+0

UserControl.ResourceタグのXAMLからストーリーボードを参照しています – Ixx

答えて

8

試してみてください。

private void onMyStoryBoardCompleted(object sender, object e) 
{ } 

と汎用EventHandler<object>を使用してサブスクライブ:もちろん

myStoryBoard.Completed += new EventHandler<object>(onMyStoryBoardCompleted); 

を、これは、イベントハンドラの第2引数は、インスタンスである必要があり、.NET Frameworkの規則に反しますEventArgs(またはその派生クラス)のものである。私は、TimelineクラスがCompletedイベントをEventHandler<object>という署名で定義しているWindows 8 Metroのような、別のフレームワークで動作していると仮定しています。

+0

いいえ、まだ同じエラーが発生します – Ixx

+0

ジェネリックな 'EventHandler 'を使って試しましたか?どのようなエラーがありましたか? – Douglas

+0

ああ、その組み合わせは実際に動作します!メソッドシグネチャはVisual Studioによって生成されているので奇妙です。そして、はい、私は地下鉄のために開発しています。 – Ixx

関連する問題