2016-12-05 1 views
0

Ich bin programmgesteuert hinzufügen mehrere Steuerelemente zu einem Formular in meinem Projekt, dann wenn ein Timer aktiviert ist, möchte ich alle vorhandenen Steuerelemente entfernen und sie durch neue Steuerelemente und neue, aktualisierte Daten ersetzen ein beiseite - ist das schreckliche Codierung?)Entfernen Sie alle Steuerelemente aus einem Formular

Ich hatte einen Blick auf msdn und fand die controlcollection.clear() -Methode, die klingt wie es tun wird, was ich will. Allerdings bekomme ich immer einen kryptischen "Verweis auf ein nicht-geteiltes Mitglied erfordert eine Objektreferenz" Fehler, wenn ich versuche, die Methode zu verwenden.

Warum passiert das? Ich bin ein Neuling und ich bin mir nicht sicher, was das nicht geteilte Mitglied ist (oder was diese sind) oder wie man es einem Objektreferenz gibt. Diese

ist nicht der Code, den ich verwende, aber ich denke, es ist der Punkt zeigt sich am einfachsten:

Private Sub add_and_remove() 
    For i = 0 To 10 
     Dim t As New TextBox 
     t.Text = "whatever" 
     Me.Controls.Add(t) 
    Next 
    Me.ControlCollection.Clear() 
End Sub 

Vielen Dank im Voraus!

+0

'ControlCollection' ist ein Typ. 'Controls' ist eine Instanz des' ControlCollection' -Typs. Achten Sie darauf, dass die Erstellung von Steuerelementen zur Laufzeit die Verantwortung für die Entsorgung von ihnen trägt, damit Ihre App nicht ausläuft. – Plutonix

+0

Oh, das war einfach, haha! Vielen Dank. Fügen Sie das als Antwort hinzu (verwenden Sie lieber controls als controlcollection) und ich akzeptiere es? – grumpasaurus

+0

"entfernen Sie alle vorhandenen Steuerelemente und ersetzen Sie sie durch neue Steuerelemente und neue, aktualisierte Daten (nebenbei - ist das schreckliche Codierung?)" - Fast sicher JA. Belassen Sie die Steuerelemente und aktualisieren Sie die Eigenschaften der Steuerelemente nach Bedarf. –

Antwort

2

Von Kommentare: Verwenden

Me.Controls.Clear() im Gegensatz zu Me.ControlCollection.Clear()

Oder noch besser, deaktivieren Sie nicht die Kontrollen überhaupt und aktualisieren Sie einfach die Eigenschaften der Kontrollen.

Vielen Dank!

Verwandte Themen