Listenelemente mit einem Wert vergleichen (c#, wpf)

knappenboy

Mitglied
Hallo,

ich habe drei Listen. Die erste hat ein Punktelement(X,Y) und jedes Element, wird später als Vergleichselement genutzt. Die anderen beiden Listen sind endlos groß. Die erste enthält die X-Werte, die andere die Y-Werte. Die Elemente der Liste2 und 3 werden zuvor berechnet und jeweils über die Zeit hinzugefügt.

Z. B.: Liste eins

private List<Punkt> auswählen = new List<Punkt>();
auswählen = new List<Punkt>();
auswählen.Add(new Punkt(10, 90));
auswählen.Add(new Punkt(20, 45));
auswählen.Add(new Punkt(-30, 100));

die zweite Liste mit den Werten die mit den X-Elementen aus Liste auswählen verglichen werden sollen

List liste2 = endlos Werte von -90,-89,...,0,1,2,...,89,90

die dritte Liste mit den Werten die mit den Y-Elementen aus Liste auswählen verglichen werden sollen

List liste3= endlos Werte von 0,1,2,...,178,179,180

Die Elemente der Liste 2 und 3 variieren und sind jeweils die X und Y Koordinaten eines Punktes der den jeweiligen Vektor versuchen sollen anzusteuern.


Sprich: Wenn Punkt(10,90) gewählt wird, dann muss der Punkt durch die Elemente aus der Liste2 (X-Koord.) und Liste 3 (Y-Koord.) angesteuert werden.
C#:
if (auswählen[0].X == Liste2[i])
                {
                if (auswählen[0].Y == Liste3[i])
                          {
                              mach was!
                          }
                }
else {spring zurück, bis es klappt}

Das erreichen der Punkte klappt. Jetzt möchte ich allerdings in die if,else Anweisung einen Timer unterbringen der mir sagt:

- Wenn der Punkt getroffen wird, dann halte diesen 3 Sekunden (Intervall 0.1) --> bedeutet für mich das 30 nacheinander folgende Werte aus Liste 2 und 3 gleich dem getroffenen Punkt sind.
- Wenn innerhalb der 3 Sekunden eines der 30 Listenelemente nicht dem des Punktes entspricht, dann fange von vorn an
- sind die 3 Sekunden erreicht, alle Elemente sind gleich, dann Lösche das erste Element aus Liste 1

Mein Aufbau
C#:
void Irgendein Ereignis (..)
{
 if (((auswählen[index].X == Liste2[i])) && (auswählen[index].Y == Liste3[i]))

                    {
                        timerSend.Interval = TimeSpan.FromSeconds(0.1);
                        timerSend.Tick += tick;
                        timerSend.Start();
                      }
else {"nochmal"}
}

void tick(object sender, EventArgs e)
        {

            zahl += 0.1f;

            if (zahl >= 3)
            {
                zahl = 0;
                auswählen.RemoveAt(index);
                timerSend.Stop();
            }
        }
Hoffentlich könnte mir Jemand das erklären, wie ich den Timer schalten muss bzw. wie die Anweisung funktioniert. Ich bekomme es nicht hin
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück