Ett tips när man skall ändra på själva listan man loopar genom är att börja bakifrånfor each-slingan tar inte med alla objekt..
När man kör t.ex:
dim o as object
for each o in controls
o.dispose()
next
Så blir inte alla objekt disposade. Man kan enkelt testa detta genom att lägga till ett 30-tal lablar eller annan control på en sida och köra det ovan. För att få bort alla objekt så måste jag köra:
dim x as integer
dim o as objekt
for x=0 to 5 '(beroende på hur många objekt som jag vill ta bort, Om det är väldigt många objekt får jag höja 5:an tror jag)
for each o in controls
if o is nothing 'vet inte riktigt hur man skriver nothing positivt (anything?)
else
o.dispose()
end
next
Någon som vet varför den inte kollar alla kontroller när man kör en for each sats?
/PeterSv: for each-slingan tar inte med alla objekt..
Kör
Dim idx As Integer
For idx = Controls.Count - 1 To 0 Step -1
Controls(idx).Dispose()
Next
Faktum är att när man kör dispose på en control så tas den bort från ditt form. Det är därför det blir problem. Hade det varit i C# hade du fått exception när din kod kördes.