2009-03-30 2 views
1

Sieht jemand etwas falsch mit diesem:Make Usercontrol entfernen sich

this.Controls.Remove(this); 

this ist eine Klasse, die Benutzersteuerung erstreckt. Wenn ich durch diesen Codeabschnitt gehe, sieht es so aus, als wäre alles in Ordnung, aber nichts passiert mit dem Formular. Ich würde erwarten, dass die Kontrolle weg ist.

Danke,

brian

Antwort

9

Wie bereits erwähnt, entfernen Sie das Steuerelement von sich selbst ... das ist wahrscheinlich nicht das, was Sie wollen. Ich nehme an, Sie möchten das Steuerelement aus seiner Eltern entfernen - so wahrscheinlich möchten Sie this.Parent.Controls.Remove(this);.

Zum Glück, da Sie Plattform nicht erwähnt haben, ist der Code der gleiche für WebForms oder WinForms.

1

this.Controls ist die Sammlung von Kontrollen in Ihrem Usercontrol existiert. "Dies" würde in dieser Sammlung nicht existieren, da "dies" der Elternteil ist.

Ich denke, Sie möchten das Formularobjekt finden und myForm.Controls.Remove (this).

4

Es passiert nichts, weil es innerhalb der Steuerung selbst ‚this‘ in den Kontrollen Sammlung von ‚this‘

Wenn Ihr Anwendungsbereich finden tut man würde

this.Container.Controls.Remove(this); 

tun wollen, aber es hängt alles Auf welcher Art von Kontrolle und in welcher Art von Container. aber das obige sollte in den meisten Fällen funktionieren.

EDIT:

Wenn Sie Ihre Steuer kennen zu einem Formular gehört, können Sie die folgende tun, oder Formular mit dem bekannten Behältertyp ersetzen (dh einer Platte)

((Form)this.Container).Controls.Remove(this); 
4

Andere Antworten Es ist richtig, darauf hinzuweisen, dass Sie nicht die richtige Sammlung verwenden.

Allerdings werde ich darauf hinweisen, dass ein Steuerelement, das sich von der Seite entfernt, nicht das ist, was ich "erwartetes Verhalten" von jedem asp.net-Steuerelement halten würde. Das Überschreiben der Render-Methode (oder das Festlegen der Visible -Eigenschaft auf false) hätte das gleiche Ergebnis und mit viel weniger Gelegenheit, denjenigen zu verwirren, der diesen Code in der Zukunft beibehalten wird.

+0

Dies ist der Code zum Entfernen der Schaltfläche für dieses Widget ... scheint ein fairer Ort, aber Punkt in beide Richtungen –