Problema risolto e scoperto l'inghippo, almeno credo

Come mi hai suggerito ho provato entrambi i controlli, sia sull'evento 'Form1_FormClosing' che sulla "chiudi", ma nella form padre avevo temporaneamente messo a false la proprieta' ControlBox in quanto non riuscivo a capire quale fosse l'evento che gestisce la chiusura dalla X, e volevo evitare la chiusura imprevista del form (ammetto che sono alle prime armi con VB e ogni giorno e' una nuova scoperta... ).
a quanto pare questo portava alla chiusura della form figlio nonostante il codice di gestione nei due eventi.
Grazie al tuo suggerimento ho scoperto qual e' l'evento per gestire la chiusura dalla X e riabilitando la proprieta' si e' messo a funzionare correttamente.

per quanto riguarda la chiamata

frm.AcceptButton.PerformClick()

in effetti avevo scritto una routine esterna da richiamare dalle varie form che dovranno eseguire la stessa serie di azioni, per semplificarmi la vita, e ho forse semplificato in maniera non pertinente il codice che ho messo qui come esempio.

l'idea e' quella di avere una routine che viene richiamata quando l'utente clicca su "chiudi" o su X, dopo aver modificato i campi del form, e salvare prima di chiudere nel caso si sia dimenticato di farlo o abbia cliccato sul bottone sbagliato per errore (si sa che gli utenti sono capaci di fare azioni imprevedibili e poi dare la colpa a te, misero sviluppatore che non risiedi nella loro mente bacata e non godi di tanta fantasia quanto loro, che non funziona).

Per cui la domanda "vuoi uscire?" in realta' voleva essere "vuoi salvare prima di uscire?"
in caso affermativo l'azione da compiere e' quella del bottone che ho assegnato alla proprieta' AcceptButton del form, ossia il bottone Salva.

PerformClick() e' il metodo che permette di eseguire l'azione del click sul bottone in questione.

Adesso pero' ho un altro problema che nasce a seguito dell'inserimento del controllo su X: nel form c'e' un controllo sulla modifica di alcuni campi, per vedere se l'utente ha effettuato delle modifiche o ha aperto il form solo per consultazione.
Per i vari campi "sensibili" ho aggiunto la gestione Field_LostFocus e al suo interno verifico se Field.Modified e' True, e in caso affermativo chiedo conferma dell'uscita senza salvataggio.
Ho notato che se clicco dal bottone Chiudi il controllo sul campo funziona correttamente, se invece clicco su X dopo aver modificato il campo la Field.Modified mi rimane a false anziche' essere true e quindi il controllo va a farsi benedire.


Ne approfitto per ringraziarti per i tuoi suggerimenti, che mi sono stati molto utili e mi hanno aiutato a risolvere il problema e ad imparare cose nuove.