Lassen Sie uns sagen, dass ich einige Komponenten wie dieses:Wem gehören Kontrollen?
class SomeForm : Form
{
private Control example;
public void Stuff()
{
this.example = new ComboBox();
// ...
this.Controls.Add(example);
}
public void OtherStuff()
{
this.Controls.Remove(example);
}
}
Wer für den Aufruf Dispose
am Beispiel Kontrolle verantwortlich ist? Ist das Entfernen aus this.Controls
Ursache für die Entsorgung? Oder gibt es Leckagen von Fenstergriffen, die die Steuerung unterstützen?
(als Referenz, frage ich das, weil ich die Windows Forms-Designer generiert Code nicht sehen, wo Entsorgen Sie die auf einem Formular Kinder zu nennen)
Sie behaupten also, dass die Kontrolle wird durchgesickert? – Servy
Absolut nicht. Wie ich in meiner Antwort gesagt habe, werden alle Steuerelemente in der Eigenschaft Controls entfernt, wenn das enthaltende Formular entfernt wird. Sie müssen also nur sicherstellen, dass die enthaltene Formularinstanz entsorgt wird. –
Das Steuerelement ** ist nicht ** in der Sammlung "Steuerelemente", weil er es aus dieser Sammlung entfernt hat, bevor das übergeordnete Element entfernt wurde. Es scheint, dass Sie den ganzen Punkt der Frage verpasst haben. – Servy