2009-03-23 6 views

Antwort

3

Wenn Sie über WinForms reden Ich nehme in der Regel eine von zwei Ansätze, dieses Problem zu lösen.

Ansatz 1

Öffnen Sie die Datei Form.Designer.cs. Innerhalb der generierten dispose-Methode füge ich einen Aufruf zu DisposeCore hinzu. Ich gehe dann zurück zu Form.cs und füge eine DisposeCore-Methode hinzu, die jetzt beim Dispose aufgerufen wird. Ich füge all meine Verfügungslogik in diese Methode ein.

Das Bearbeiten der Designerdatei wird technisch nicht unterstützt. Ich habe jedoch festgestellt, dass diese spezielle Bearbeitung nicht weggespült wird, wenn der Designer den Code neu erstellt.

Ansatz 2

einen Event-Handler Form.Disposed hinzufügen und im Handler meine dispose Logik tun. Dies ist der bevorzugte Weg, weil es eine unterstützte Operation ist und nicht von einer Designer-Generation beeinflusst wird, auf die Sie noch stoßen müssen.

+0

Natürlich * Schlag Stirn *, Disposed Ereignis. Danke –

+0

Nur InitializeComponent() wird neu generiert. Alles andere in diesem Designer.cs ist gut zu gehen. (Für VS2005, mindestens) – Ken

+0

Wäre es nicht einfacher zu bewegen? –

1

Können Sie klären, welche Art von Kontrollen? ASP.NET, WinForms?

In ASP.NET können Sie:

protected override void OnUnload(EventArgs e){ 
    base.OnUnload(e); 
    //Unload here... 
} 
1

Oder Sie könnten es ausschneiden und in die Hauptdatei .cs einfügen. Dieser Code befindet sich nicht innerhalb des generierten Codes "#regionComponent Designer", so dass Studio ihn nicht verpassen wird.