2013-05-19 14 views
6

Ich habe schon ein paar Threads darüber gelesen, aber ich weiß immer noch nicht, wie ich es in meinem Fall lösen kann. Ich komme aus Java und meist neu in C#Kann Typ 'System.EventHandler' nicht in 'System.EventHandler <object>' für Storyboard komplett konvertieren

Ich möchte Zuhörer an, wenn Animation beendet:

myStoryBoard.Completed += new EventHandler(onMyStoryBoardCompleted); 

Und:

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

Und ich bekomme den Fehler im Titel. Ich habe versucht:

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

Aber dann bekomme ich:

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

So scheint es, dass die Signatur mit Eventhandler nicht kompatibel ist <object> und ich konnte nicht finden, wie es kompatibel zu machen, habe ich auch don‘ Ich weiß, ob dieser Ansatz richtig ist.

Ich las

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

Aber immer noch keine Lösung für diesen Fall finden.

Vielen Dank im Voraus.

+0

'myStoryBoard.Completed + = neuer EventHandler (onMyStoryBoardCompleted);' sollte funktionieren – SLaks

+0

Welche StoryBoard-Klasse verwenden Sie? Wenn 'Timeline' abgeleitet ist, sollte' Completed' als Typ EventHandler definiert werden, was bedeutet, dass dies ohne Fehler kompiliert werden sollte. –

+0

Ich verweise auf ein Storyboard von XAML in UserControl.Resource-Tag – Ixx

Antwort

8

Versuchen:

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

und abonnieren unter Verwendung des generischen EventHandler<object>:

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

Natürlich, das geht gegen die .NET Framework-Konvention, dass das zweite Argument zu einem Event-Handler sollte eine Instanz sein von EventArgs (oder einer davon abgeleiteten Klasse). Ich nehme an, dass Sie auf einem anderen Framework wie Windows 8 Metro ausgeführt werden, dessen Timeline Klasse ein Completed Ereignis mit einer EventHandler<object> Signatur definiert.

+0

Nein, immer noch den gleichen Fehler – Ixx

+0

Haben Sie es mit dem generischen 'EventHandler ' versucht? Welchen Fehler hast du bekommen? – Douglas

+0

Ah, diese Kombination funktioniert tatsächlich! Es ist seltsam, da die Methodensignatur von Visual Studio generiert wurde. Und ja, ich entwickle für Metro. – Ixx

Verwandte Themen