Originariamente inviato da GhostFire
codice:
    Private Sub ShowNewForm(ByVal sender As Object, ByVal e As EventArgs) Handles NewToolStripMenuItem.Click, NewToolStripButton.Click, NewWindowToolStripMenuItem.Click

        Dim frm As New Form()
        frm = NewForm1

        frm.Show()

    End Sub
Il codice sopra è sbagliato: non ha senso fare New per creare un oggetto, assegnarlo a una variabile (frm) e poi sovrascrivere il valore con NewForm1.

Meglio dichiarare semplicemente il Form secondario così:
codice:
Public SecondFormInstance As SecondForm
dove SecondForm è il nome del Form, cioè della sua classe, e SecondFormInstance è il nome della variabile che conterrà il suo riferimento quando la finestra verrà effettivamente creata.

Nel pulsante di visualizzazione della finestra, per crearla e mostrarla è sufficiente scrivere
codice:
    Private Sub ShowNewForm(ByVal sender As Object, ByVal e As EventArgs) Handles NewToolStripMenuItem.Click, NewToolStripButton.Click, NewWindowToolStripMenuItem.Click

        ' Creo il Form se non è stato ancora istanziato
        If SecondFormInstance Is Nothing Then
              SecondFormInstance = New SecondForm()
        End If

        ' Visualizzo il Form
        SecondFormInstance.Show()

    End Sub
Ogni volta che si deve fare riferimento alla finestra o ai suoi membri (es. controlli visuali), occorre farlo attraverso il campo pubblico che contiene il riferimento, cioè SecondFormInstance.

In merito a questa implementazione:
codice:
    Private Sub cmdInviaDati_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdInviaDati.Click
        MDIParent1.NewForm1.txtProfessionista.Text = Me.txtNominativo.Text
        Me.Close()
    End Sub
è più corretto passare alla finestra secondaria un riferimento a quella chiamante, piuttosto che interagire l'una con l'altra e viceversa tramite membri pubblici: più vi sono elementi accessibili all'esterno, più si riduce l'incapsulazione e si aumentano le possibilità di errori logici.