Entwickler-Ecke

WinForms - Alle Elemente einer List von Klasse aus ausgeben


master147 - Sa 31.03.12 10:35
Titel: Alle Elemente einer List von Klasse aus ausgeben
Hallo,

ich habe eine Klasse in der bestimmte Daten in einer Liste Rest gespeichert werden soll und dann die gesamte Liste in einer Richtextbox ausgegeben werden soll.
Leider funktioniert das so nicht. Weiß jemand woran das liegen könnte ?

Hier der Code der Klasse:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
List<string> Rest = new List<string>();
Rest.Add("test");
Rest.Add("test2");

for (int i = 0; i < 3;i++)
{
    return Rest[i];
}


Vielen Dank für eure Hilfe.

Moderiert von user profile iconTh69: Codeformatierung


Regan - Sa 31.03.12 11:07

Deine Fehlermeldung könnte etwas beschreibender sein: Was passiert denn? Wird nur das erste Element (="test") in deiner Richtextbox ausgeben? Wenn ja, dann liegt es daran, dass deine Funktion bei return schon beendet wird, d. h. die anderen Schleifendurchläufe werden gar nicht gemacht.

Edit: Es empfiehlt sich übrigens, durch eine List mit foreach zu loopen, damit du auch kein Element vergisst:

C#-Quelltext
1:
2:
3:
4:
foreach(String s in Rest)
{
  return s;
}


master147 - Sa 31.03.12 11:50

Hallo,

du hast Recht. Es wird nur das erste Element in der Richtextbox ausgegeben.
Bloß wie kann ich es schaffen, dass beide Elemente ausgegeben werden ?


Th69 - Sa 31.03.12 11:56

Hallo master147,

wenn du die gesamte Liste zurückgeben willst, dann reicht

C#-Quelltext
1:
return Rest;                    

Um die Texte dann der RichTextBox zuzuweisen, kannst du dann die ToArray-Methode benutzen:

C#-Quelltext
1:
2:
3:
List<string> lines = GetRest(); // Aufruf deiner Methode

richTextBox.Lines = lines.ToArray();



P.S. Regan, auch bei deiner Schleife würde nur der erste Wert zurückgegeben.


master147 - Sa 31.03.12 12:13

Hallo,

leider funktioniert das noch nicht ganz.

Wenn ich die Methode aufrufe bekomme ich folgenden Fehler:


Eine implizite Konvertierung vom Typ "string" in "System.Collections.Generic.List<string>" ist nicht möglich.

Rot markiert der folgende Quelltext


C#-Quelltext
1:
2:
3:
4:
5:
6:
int jahr = Convert.ToInt32(textBox3.Text);
           

            List<string> lines = (Feiertag.GetRest(jahr)); // Aufruf

            richTextBox1.Lines = lines.ToArray();


Ralf Jansen - Sa 31.03.12 12:33

Du hast diesen Hinweis überlesen.

user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:

wenn du die gesamte Liste zurückgeben willst, dann reicht

C#-Quelltext
1:
return Rest;                    


Deine GetRest Methode sollte schon die ganze Liste zurückliefern. Also ändere den Rückgabetyp der GetRest Methode von string in List<string>, entsorge die Schleife und gebe einfach die ganze Liste zurück.


master147 - Sa 31.03.12 12:41

Danke an euch alle !

Es hat funktioniert.


Regan - Sa 31.03.12 13:50

user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
P.S. Regan, auch bei deiner Schleife würde nur der erste Wert zurückgegeben.

Das ist mir bewusst. Ich wollte bloß dort allgemein nochmal nachbessern ;)