Newsgroup: it.comp.lang.visual-basic
Titolo: Istanziare una form attraverso il suo nome di classe

Salve a tutti.
Sono un utilizzatore di Delphi da vecchia data e ultimamente mi sto 
cimentando nell'apprendimento di Visual Basic .Net.
Nel realizzare un programmino di prova costituito da una form (frm 
Avvio) contenente un pulsante che ha la funzione di istanziare e 
mostrare una seconda form (frmSquadrario), ho scritto il seguente codice 
che, pur funzionante, mi ha fatto sorgere dei dubbi:
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles btnOK.Click
	frmSquadrario.Show()
End Sub
Cioe' ho utilizzato, per istanziare la seconda form, direttamente il suo 
nome di classe applicandogli il metodo Show().
Cio' mi lascia perplesso perche':
- non e' stato necessario dichiarare una variabile di tipo frmSquadrario;
- per creare l'istanza non e' stato necessario richiamare esplicitamente 
  il construttore New() ma e' bastato applicare il metodo Show().
Evidentemente mi sfugge qualcosa.
Ho cercato in giro per la rete lumi che mi fugassero questi dubbi e mi 
chiarissero il comportamento del Framework .Net in proposito ma, forse 
non ho saputo chiedere bene, non ho trovato nulla che facesse al caso mio.
Ringrazio anticipatamente della eventuale attenzione.
Umberto.

 Evidentemente mi sfugge qualcosa.
In VB 2005 sono state reintrodotte le istanze predefinite per le form 
del progetto. Gli utenti vanno accontentati :-)
Se non ti piace, puoi tranquillamente istanziare tu stesso la form:
         Dim myFrm As New frmSquadrario()
         myFrm.Show()
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL

 ho saputo chiedere bene, non ho trovato nulla che facesse al caso mio.
Non è il framework, che giustamente richiede il new, è VB2005 che hanno 
reintrodotto l'istanza di default dei form.
Praticamente se fai
FormX.QualcheCosa
in realtà VB usa una sua collection interna di Form e restituisce FormX, se 
FormX non è ancora stato instanziato fa na new.
Questo è un buon sistema per fare contenti i VBisti della domenica e far 
sorgere dei dubbi a chi piace leggere le cose come sono.
Ciao 

 
Grazie VITRIOL per la pronta risposta.
Quanto dici mi fa sorgere spontaneamente un'altra domanda. Istanza 
predefinita significa che all'avvio dell'applicazione viene comunque 
creata un'istanza della form secondaria anche se non richiesto?
Se si, non e' possibile modificare questo comportamento predefinito?
Grazie ancora.
Umberto

 FormX non è ancora stato instanziato fa na new.
Collezione che puoi vedere con My.Forms


 Collezione che puoi vedere con My.Forms
Sì, infatti, stavo guardando il risultato con Reflector tanto per capire 
cosa faceva il compilatore.
Ciao 

 creata un'istanza della form secondaria anche se non richiesto?
No, non credo. A livello di Framework viene creata solo se la usi.


 sorgere dei dubbi a chi piace leggere le cose come sono.
Chiedo anche a te: e' possibile annullare questo comportamento predefinito?
Grazie ancora.
Umberto

 cimentando nell'apprendimento di Visual Basic .Net.
[CUT]
Una curiosità.
Perchè ti cimenti in 
VB.NET
 se esiste una versione di Delphi.NET?
bye

 Perchè ti cimenti in 
VB.NET
 se esiste una versione di Delphi.NET?
Forse perché è ancora inchiodata a .NET 1.1...


 
Delphi e' un vecchio amore ma da quando VB e' diventato un vero 
linguaggio a oggetti mi incuriosisce anch'esso.
Senza dimenticare che il papa' di Delphi e' lo stesso di VB.Net.
Ciao
Umberto