Dynamische textboxen verwijderen

Status
Niet open voor verdere reacties.

djenn

Gebruiker
Lid geworden
2 sep 2006
Berichten
68
Hallo,
Ik heb een formulier waarop regels met textboxen worden gecreerd, elke regel bevat 5 textboxen.
Nu wil ik dat door een druk op een button al die textboxen in 1 keer verwijder worden, behalve diegene die als naam "receptnaam" heeft.
Nu is het gekke dat er door mijn gebruikte oplossing niet alle textboxen worden verwijderd, hoewel er volgens mij geen fout in mijn code zit.
Zouden jullie even mee willen denken?

Code:
Public Sub RemoveTextboxes()
       Dim TB As New Control
       
        For Each TB In Me.Controls
            If TypeOf TB Is TextBox Then
                If TB.Name <> "receptname" Then
                    Me.Controls.Remove(TB)
                    RemoveHandler TB.Click, AddressOf TB_Click
                    TB.Dispose()
                 End If
             End if
        Next
End Sub
 
Laatst bewerkt:
Zijn de boxen ook dynamisch gecreëerd? Zijn de textboxes een eigen klasse of gedeeltelijke afgeleide? Mogelijk gaat het fout bij de typeof controle. Als je boxen dynamisch aanmaakt is het vaak beter deze op te slaan in een list of andere container en vervolgens gewoon alle controls uit de list te verwijderen.

Sowieso eerst de handler verwijderen en dan pas de control natuurlijk anders loopt je programma vast na een ongelukkige garbage collection.
 
De textboxen zijn dynamisch gecreerd en zijn geen apart klasse.
Bedankt voor de tip voor de volgorde van verwijderen, ik dacht je eerst de instantie moest verwijderen voor de handler, weer wat geleerd.
Het is zeker een goed idee om van de textboxen een collectie te maken zodat ik de hele collectie kan verwijderen, waarschijnlijk is dat makkelijker en zekerder.
 
Heel erg bedankt voor de tip Wampier dit werkt als een speer!
Hoewel ik nog steeds niet begrijp waarom, ik bedoel de manier van aanmaken is niet veranderd en eigenlijk zitten de boxen al in een collection omdat ze in de form collection zitten......
Maar goed voorlopig kan ik weer even verder.
 
Het probleem met typeof is vaak (misschien ook in dit geval) dat als de dynmaische objecten onderdeel zijn van een range of een andere modificatie maakt, dat het typeof veranderd wordt naar de container klasse of naar het objecttype "object". Detectie via typeof is dan onzeker.

Het gebruik van een eigen collection is gewoon gewoonte omdat de performance beter is en je zeker weet wat je aan het beheren bent. Vooral ook als je veel casts moet doen is dit de betere en veiligere oplossing
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan