generische Liste mit Objekten, die den gleichen Objektnamen haben

10/03/2010 - 16:25 von Alexander Richter | Report spam
Hallo,
mit einer Methode erstelle ich mehrere UserControls (praktisch wie eine
Schleife),
welche sich nur in den Eigenschaften unterscheiden.
Diese UserControls füge ich in dieser Methode in eine generischen Liste, um
spàter Zugriff alle UserControls zu haben.
Durch das Anwenden der immer selben Methode, haben die UserControls
den gleichen Objektnamen.

List<UserControl> listTest = new List<UserControl>();

listTest.Add(myControl); //UserControl myControl in die Liste

for (int i = 0; i < listTest.Count; i++) {
Console.WriteLine (listTest[i].Name);
}

Nach dem ersten UserControl wird mir angezeigt der Name "Control 01", was
richtig ist.
Nach dem Einfügen des zweiten UserControls wird mir zweimal der Name
"Control 02",
d.h. nicht mehr "Control 01" aufgelistet. Nach dem Einfügen wird dreimal
"Control 02"
angezeigt u.s.w.

Es liegt wohl an der selben Objektbezeichnung.
Hat jemand einen Rat was ich àndern muss, damit die Liste funktioniert?


Alexander
 

Lesen sie die antworten

#1 Konrad Neitzel
10/03/2010 - 16:49 | Warnen spam
Hallo Alexander!

Die Objektbezeichnung dürfte es nicht sein. Kannst Du einmal den kompletten
Code posten oder mir zusenden? Dein Code fügt ja nur ein Objekt in die
Liste.

Was ich mir vorstellen könnte (was Dein Verhalten klar zeigt) ist sowas in
der Art:

List<UserControl> listTest = new List<UserControl>();
MyControl myControl = new MyControl("Control 01");
listTest.Add(myControl); //UserControl myControl in die Liste
myControl.Name = "Control 02"
listTest.Add(myControl); //UserControl myControl in die Liste

Hier fügst du das selber Objekt immer wieder in die Liste und nicht
unterschiedliche. Bei

List<UserControl> listTest = new List<UserControl>();
MyControl myControl = new MyControl("Control 01");
listTest.Add(myControl); //UserControl myControl in die Liste
myControl.Name = new MyControl("Control 02");
listTest.Add(myControl); //UserControl myControl in die Liste

würden wirklich 2 unterschiedliche Objekte in die Liste eingefügt.

Eine weitere Möglichkeit ist natürlich, dass das Control irgendwas intern
speichert, z.B. Name als static oder so. Sowas könnte man aber auch nur
direkt bei der Implementierung genau sehen.

Vielleicht hat das ja schon etwas geholfen oder jemand hat eine andere Idee.

Mit den besten Grüßen,

Konrad

Ähnliche fragen