Entwickler-Ecke

WPF / Silverlight - EventHander mit Wertübergabe?


_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(00001); 
            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(00001);
            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