Non ho mai provato una struttura del genere, almeno non in questo contesto (l'ho fatto recentemente in Angular ma non ho avoto problemi di questo tipo), l'impressione è che il DialogResult.OK si propaghi anche alla dialog intermedia facendola chiudere, hai provato nella form 1 a controllare il valore che hai alla chiusura della form 2?
poi nella seconda form io proverei ad intercettare la chiusura della terza come hai fatto nella prima

Quote Originariamente inviata da Veronica80 Visualizza il messaggio
codice:
    Private Sub bttApriTerzo_Click(sender As Object, e As EventArgs) 
        //DGV è un datagridview che passo come variabile alla Sub New del form TERZO

        Dim frm As New Terzo(dgv)
        Try
             If frm.ShowDialog(Me) = DialogResult.OK Then
                 //...
             End If
        Catch ex As Exception
            //mie istruzioni per gli errori
        End Try
    End Sub
Grazie a tutti!