HEJ! (Blev fel forum!???!) Alexander, något liknande detta: Onkelborg, .clear, så var det. Om jag ska vara ärlig så förstod jag inte riktigt hans fråga förrens i efterhand heller så.. :) Dessutom kan jag inte .net framework utantill precis :) Onkelborg, Jag själv är långt ifrån petig om små, korta saker fungerar till 100%. Jag vill hellre ha ett inkomplett svar som kan ge mig en idé om var jag ska titta efter information på, eller en idé om ett annat sätt att lösa uppgiften på än inget svar alls.Me.Controls.Remove(ctrl) tar inte alla...
Jag sätter ut en massa usercontrol av Balk på en form.
Vill sedan radera dessa med hjälpa av detta.
Jag får köra detta ca 5 ggr för att bli av med alla 600st.
Något som vet hur man skall få till det bättre???
REV1: Den radera bara hälften per gång???
TACK!
/Alexander
For Each ctrl In Me.Controls
If TypeOf (ctrl) Is Balk Then
Me.Controls.Remove(ctrl)
End If
NextSv: Me.Controls.Remove(ctrl) tar inte alla...
Problemt är att du plockar bort kontroller samtidigt som du försöker gå igenom alla. Det blir lurigt att hålla räkningen rätt på hur många som man gått igenom och hur många som finns kvar etc. Vad du skall göra är att först går igenom alla dina kontroller och lagra de du vill ta bort i en array. Sen går du igenom den och plockar bort det som finns i den.
[C#]
ArrayList controlsToRemove =new ArrayList();
foreach(Control c in this.Controls)
{
if( c.GetType() == typeof(TextBox) )
controlsToRemove.Add(c);
}
IEnumerator enumerator = controlsToRemove.GetEnumerator();
while (enumerator.MoveNext())
this.Controls.Remove((Control)enumerator.Current);
[VB.NET]
Dim c As Control
Dim controlsToRemove As ArrayList = New ArrayList
For Each c In Me.Controls
If TypeOf (c) Is TextBox Then
controlsToRemove.Add(c)
End If
Next
Dim enumerator As IEnumerator = controlsToRemove.GetEnumerator()
While enumerator.MoveNext()
Me.Controls.Remove(CType(enumerator.Current, TextBox))
End While
Hoppas det löser sig!
//Andreas
Sv: Me.Controls.Remove(ctrl) tar inte alla...
<code>
do while me.controls.[length/count] > 0
me.controls.remove(0)
loop
</code>Sv: Me.Controls.Remove(ctrl) tar inte alla...
Gissar du bara ? Din kod gör juh inte alls vad Alexander behöver göra, dvs plocka bort <b>alla</b> kontroller av en viss typ och inte alla kontroller i control listan. Var får du <b>lenght</b> ifrån? Din kod innehåller ett antal syntaxfel också. Vill man tömma alla controller använder man <b>Clear</b> metoden istället.
//AndreasSv: Me.Controls.Remove(ctrl) tar inte alla...
Sv: Me.Controls.Remove(ctrl) tar inte alla...
Var en intressant C#/VB.NET hybrid du klämde till med =) Vad jag försökte få fram är att det tar 1minut att kolla i hjälpen om man är osäker men ett konstigt / inkorrektsvar kan ge den som frågar att göra i timmar.. en väl spenderad minut för att vara säker på att man gör rätt .. tips testa alltid egen kod så du vet att den kompilerar och fungerar, tror du själv skulle uppskatta om folk gjorde det på dina inlägg eller? =)
//AndreasSv: Me.Controls.Remove(ctrl) tar inte alla...
Och som jag sa; jag tolkade hans fråga helt fel. Jag fick intrycket av att han ville ta bort alla kontroller. Angående .Clear; .Clear() är inte något som brukar använda direkt varav jag inte tänkte på den :)
Det där med att testa och kompilera; det enda jag hade igång just då var just webbläsaren och jag ansåg det inte särskilt nödvändigt att dra igång ett test-projekt i vs.net för den lilla koden då det ganska enkelt skulle kunna gå att rätta till de misstag som fanns eftersom att det inte är så svårt att klura ut vad man vill ska hända enligt den koden.
Så, nu tror jag att jag har gett en kommentar till alltihopa :)