Laden...

Textboxen an List<T> binden bzw. über List<T> befüllen

Erstellt von jogisarge vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.094 Views
J
jogisarge Themenstarter:in
154 Beiträge seit 2006
vor 14 Jahren
Textboxen an List<T> binden bzw. über List<T> befüllen

Hallo zusammen,

ich habe eine Form mit Controls die Artikelinfos darstellen.
d.h. Ich habe ein Artikelobjekt, und meine felder sind per Databinding an mein Artikelobjekt gebunden.
Nun kann es zu einem Artikel bis zu zehn VK-Preise geben.
d.h. ich habe 10 Textboxen auf meiner Form , die gefüllt werden müssen.
In meinen Artikelobjekt gibt es ein Property List<Artikelpreis>.
Dort können 0 - 10 Elemente enthalten sein.
wenn also nur drei Preise hinterlegt sind, dann sind auch nur 3 Elemente in der Liste und es werden auch nur die ersten 3 Textboxen gefüllt.

Gibt es eine Möglichkeit, die 10 Textboxen an die Liste zu binden ?

oder
wie macht man das ?

Gruß jogi

5.299 Beiträge seit 2008
vor 14 Jahren

man bindet die List<Artikelpreis> z.B. an eine Listbox. Oder, wenn Artikelpreis selbst was komplizierteres ist, an ein DatagridView.

Ungewöhnlich übrigens, dass du nur ein Artikel-Objekt hast - was hattes damit auf sich?

Der frühe Apfel fängt den Wurm.

J
jogisarge Themenstarter:in
154 Beiträge seit 2006
vor 14 Jahren

Gibt es auch eine Möglichkeit, die textboxen zu behalten ?
Artikelpreis ist nicht besonderes.

J
jogisarge Themenstarter:in
154 Beiträge seit 2006
vor 14 Jahren

Ungewöhnlich übrigens, dass du nur ein Artikel-Objekt hast - was hattes damit auf sich?

was meinst du mit ungewöhnlich ?
Mein Usercontrol zeigt ein Artikelobjekt an.
Ich habe schon mehrere Artikelobjekte.
d.h. Artikel wird im Grid gewählt, und es wird ein Artikelobjekt im Detail angezeigt.

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo jogisarge,

Gibt es eine Möglichkeit, die 10 Textboxen an die Liste zu binden ?

Listen kann man nur an Listen- und nicht an skalare Controls binden. Wenn du keinen Listen-Control nehmen willst, kannst du nur in einer Schleife an jede einzelne TextBox ein einzelnes Artikelpreis-Objekt binden.

herbivore

J
jogisarge Themenstarter:in
154 Beiträge seit 2006
vor 14 Jahren

OK, danke soweit.

nun durchlaufe ich meine Artikelpreisliste:


int zaehler;
zaehler = 1;
foreach (Artikelpreis apr in artikel.Artikelpreisliste)
{
      ...
      zaehler++;
}

Angenommen die 10 Textboxen haben die Namen tbxPreis1 - tbxPreis10.
Wie kann ich in der Schleife die jeweilige Textbox ansprechen ?

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo jogisarge,

du kannst doch die TextBoxen besser gleich in einer Schleife im Code statt mit dem Designer erzeugen und dir dann sofort in einem Array merken. Dann nimmst du statt der foreach eine for-Schleife und bindest die Elemente mit dem gleichen Index.

Siehe auch [FAQ] Variablennamen zur Laufzeit zusammensetzen.

herbivore

95 Beiträge seit 2006
vor 14 Jahren

Hallo,

wenn Dein Artikelobjekt die Schnittstelle ICustomTypeDescriptor implementiert, kannst du zusätzliche virtuelle Properties "vortäuschen".

Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)

J
jogisarge Themenstarter:in
154 Beiträge seit 2006
vor 14 Jahren

Hallo herbivore,

ich verstehe das nicht ganz.
wenn ich eine Form enterfe, dann nehme ich die Textbox aus der Toolbox und lege die Textbox auf meiner form ab und stelle die eigenschaften ein.
Gerade Format und Position.

Ist es nicht viel komplizierter, die Textbox im code zu erzeugen ?
Ich meine, für mich als Anfäger !!!
Man sieht halt auch gleich im Designer, wie es aussieht ??

jogi

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo jogisarge,

Ist es nicht viel komplizierter, die Textbox im code zu erzeugen ?

nein, kopiere dir einfach den entsprechenden Code für die Erzeugung einer TextBox aus xyz.designer.cs. Anschließend muss du nur die Properties für die Location (meistens sogar nur die für die Y-Position) in Abhängigkeit vom aktuellen Schleifenindex anpassen.

herbivore