2013-05-19 12 views
6

Ho già letto alcuni thread su questo argomento, ma non so ancora come risolverlo nel mio caso. Io vengo da Java e per lo più nuovi per C#Impossibile convertire implicitamente il tipo 'System.EventHandler' in 'System.EventHandler <object>' per storyboard completo

Voglio collegare ascoltatore quando l'animazione finisce:

myStoryBoard.Completed += new EventHandler(onMyStoryBoardCompleted); 

E:

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

E ho l'errore nel titolo. Ho provato:

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

Ma poi ho capito:

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

così sembra che la firma non è compatibile con EventHandler <object> e non riuscivo a trovare il modo di renderlo compatibile, anche io don' so se questo approccio è corretto.

ho letto

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

Ma ancora non si trova la soluzione per questo caso.

Grazie in anticipo.

+0

'myStoryBoard.Completed + = new EventHandler (onMyStoryBoardCompleted);' dovrebbe funzionare – SLaks

+0

Quale classe StoryBoard stai utilizzando? Se è derivato da 'Timeline', il' Completed' dovrebbe essere definito come tipo EventHandler, il che significa che dovrebbe essere compilato senza errori. –

+0

Sto facendo riferimento a uno storyboard da XAML in UserControl.Tipo risorsa – Ixx

risposta

8

Prova:

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

E abbonarsi compilando il generico EventHandler<object>:

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

Naturalmente, questo va contro la convenzione .NET Framework che il secondo argomento di un gestore di eventi dovrebbe essere un'istanza di EventArgs (o una classe derivata). Presumo che tu stia utilizzando un altro framework, come Windows 8 Metro, la cui classe Timeline definisce un evento Completed con una firma EventHandler<object>.

+0

No, si ottiene ancora lo stesso errore – Ixx

+0

Hai provato a utilizzare il generico 'EventHandler '? Che errore hai ottenuto? – Douglas

+0

Ah, quella combinazione funziona davvero! È strano poiché la firma del metodo è stata generata da Visual Studio. E sì, sto sviluppando per Metro. – Ixx

Problemi correlati