Ho simulato il tuo problema creando Form1 (IsMDIContainer = True), Form2 e Form3
Ecco il codice:
codice:
'in Form1
Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
Dim f As New Form2
f.MdiParent = Me
f.Show()
End Sub
'in Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f As New Form3
f.Owner = Me
f.MdiParent = Me.MdiParent
f.Show()
End Sub
In effetti il Form3 appare correttamente come mdi_child, ma sembra ignorare la proprietà Owner. Infatti, chiudendo l'instanza di Form2 che dovrebbe "comandare" Form3, quest'ultimo rimane tranquillamente aperto.
Ho cambiato di posto due righe:
codice:
'in Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f As New Form3
f.MdiParent = Me.MdiParent
f.Owner = Me
f.Show()
End Sub
e stavolta appare il seguente errore: Non top level controls cannot have an owner.
In pratica, sembra che le finestre mdi_child siano considerate di tipo "non top level" e che ad esse non sia consentito avere un owner. Effettivamente tale discorso non fa una piega, in quanto una finestra child è già "posseduta" da un form MDI, aggiungere un ulteriore proprietario (con la propriatà Owner) renderebbe il form conteso da due diversi proprietari che potrebbero litigare tra di loro (!). Scusa il discorso aggrovigliato, spero cmq di essere stato sufficientemente chiaro, ciao