08. marts 2006 - 12:47Der er
9 kommentarer og 1 løsning
dynamiske labelnavn, tilgå i foreach
jeg har nogle labels der hedder lbl0, lbl1 osv. dem vil jeg gerne hælde noget data ind i, men uden at skulle have en foreach til at finde den ud af controls på hele formen
kunne være fedt hvis man kunne lave en ("lbl" + i).text, men det kan jeg ikke lige gennemskue.
hvordan kan jeg gøre dette uden at skulle ud i en masse løkker for at søge formen igennem?
Tror ikke du du undgår at løbe dine controls igennem enten på den ene eller den anden måde.
Men du kan jo lave en metode som tager 2 parametre, en streng representation af den control hvis attribut du ønsker at sætte og en indeholdende værdien du ønsker den sat med.
det holder nemligt ikke da jeg henter items ud fra en database, og det er ikke altid at jeg skal pille i dem alle sammen, en foreach som holder styr på "i" ville virke hvis jeg bare havde en metode at tilgå labels dynamisk
Nej, ny synes jeg lidt du giver for nemt op på mikkel sommers svar har lige ændret lidt i det, kan ikke garantere at det virker ;) public void setControl(string control, string newValue) { int i = 0; for(int i = 0; i < this.Controls.Count; i++) { if(i< 5)//i mindre end 5 eller hvormange det nu var i++; Control c = (Control)this.Controls[i]; if(c.Name == "lbl"+i) { c.Text = newValue; } } }
det bliver noget fnidder og mere kompliceret end den løsning jeg allerede har.
tror løsningen vil være at hardcode de navne, det er ikke fordi at de ændrer sig men simpelthen for at gøre koden mere simpel, er allerede ud i en løsning med noglet for løkker, noglet ifs og en hel masse andet.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.