Avrai senz'altro attribuito qualche impostazione errata ad uno o entrambi i due form che entra in conflitto con il meccanismo MDI.
Io ho creato un nuovo progetto, ho inserito due form, ho impostato la proprietà IsMdiContainer a True nel principale e aggiunto questo codice da eseguire alla pressione di un pulsante:
Il codice funziona perfettamente: crea un'istanza del form e la visualizza all'interno del contenitore. Premendo ripetutamente il pulsante, essendo presente un'istruzione New, viene creata ogni volta una nuova istanza della classe; ci saranno, quindi, tanti form quante sono le volte che il pulsante viene premuto, e ciascun form si comporterà così come definito nel codice della classe che lo rappresenta e che ne definisce inoltre le caratteristiche (aspetto, posizione, ecc.).codice:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim frm As New ChildForm frm.MdiParent = Me frm.Show() End Sub
Usando la scrittura simile a VB6, viene creata automaticamente un'istanza del form e si lavora sempre su quella implicitamente:
Ecco perché è importante avere ben presente la differenza nelle due scritture, e conviene utilizzare la prima forma in modo da abituarsi al metodo di lavoro imposto dal .NET Framework, evitando poi di trovarsi in difficoltà non appena si incontra un blocco di codice che tratta le classi "come si deve".codice:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ChildForm.MdiParent = Me ChildForm.Show() End Sub
Ciao!![]()

Rispondi quotando