_Joe_ - Mi 15.07.09 14:53
Titel: EventHander mit Wertübergabe?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| void StartTimer(double offsetX, double offsetY, double offsetZ) { System.Windows.Threading.DispatcherTimer myDispatcherTimer = new System.Windows.Threading.DispatcherTimer(); myDispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 1); myDispatcherTimer.Tick += new EventHandler(Each_Tick); myDispatcherTimer.Start(); } public void Each_Tick(object o, EventArgs sender) { translate.OffsetX = 3 * Math.Cos(i); translate.OffsetZ = 3 * Math.Sin(i); i++; fps(); if (i == 360) i = 0; } |
In der Each_Tick Funktion müsste ich eigentlich noch ein Wert übergeben. Ich weiss nur nicht wie.
also in etwa so
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| void StartTimer(double offsetX, double offsetY, double offsetZ) { System.Windows.Threading.DispatcherTimer myDispatcherTimer = new System.Windows.Threading.DispatcherTimer(); myDispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 1); myDispatcherTimer.Tick += new EventHandler(Each_Tick ????); myDispatcherTimer.Start(); } public void Each_Tick(object o, EventArgs sender,int Wert) { translate.OffsetX = 3 * Math.Cos(i); translate.OffsetZ = 3 * Math.Sin(i); i++; fps(); if (i == 360) i = 0; } |
JüTho - Mi 15.07.09 15:19
Hallo,
würdest du bitte noch sagen, mit welchem Timer du arbeitest? Ich kenne (ohne WPF) 3 Varianten, in WPF gibt es AFAIK noch eine weitere.
Bitte beachte auch, dass EventHandler grundsätzlich so deklariert werden:
C#-Quelltext
1: 2: 3: 4:
| public delegate void EventHandler ( Object sender, EventArgs e ) |
Das Objekt bekommt den Namen sender, die EventArgs den Namen e. Wenn man (wie du) davon abweicht, kommt man als Leser ständig durcheinander.
Wenn das Tick-Ereignis nur einen "einfachen" EventHandler akzeptiert, dann muss dein Wunsch als unmöglich zurückgewiesen werden. Aber du könntest eine beliebige Variable der Klasse, die den Timer enthält, benutzen.
Jürgen