Anstatt darauf hinzuweisen, dass alle Fenster geschlossen werden und nicht gespeichertes verloren geht wäre es besser, wenn man die Wahl hätte :
1) alle Fenster speichern und Progamm beenden
oder
2) Beenden ohne zu speichern alle nicht gespeicherten Änderungen gehen verloren.
Wie wichtig ist das?
Es währe sehr aufwendig mit allen Fenstern eine Kommunikation auf zu bauen, um ihnen ein "good by" zu senden.
Nicht wirklich wichtig, mehr eine kosmetische Sache.
Wenn man in jeder Form die Methode, die zum Speichern verwendet wird, gleich benennen würde (z.B. save_all), könnte man etwa folgendes machen.
try
{
foreach (Form form in Application.OpenForms)
{
form.save_all;
}catch...