Ciao
Puoi renderti il lavoro molto più semplice chiamando la sola API AnimateWindow, in questo modo:
<DllImport("user32.dll")> _
Shared Function AnimateWindow(hwnd As IntPtr, dwTime As Integer, dwFlags As Integer) As Boolean
End Function
Const AW_HIDE As Integer = &H10000
Const AW_BLEND As Integer = &H80000
Protected Overrides Sub OnClosing(e As CancelEventArgs)
'Fa sparire la finestra in 5 secondi
AnimateWindow(Me.Handle, 5000, AW_HIDE Or AW_BLEND)
End Sub
E quindi per ogni Form che vuoi avere questa caratteristica basta che invece di derivarla da Form, la derivi dalla tua form personalizzata (quella dove hai inserito il codice precedente).
Ovviamente puoi anche aggiungere delle proprietà per personalizzare la durata dell'animazione e se abilitarla o meno...
Luca