Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Postato originariamente da Jeremy: Scusa se mi permetto di contraddirti.....ma con il codice che hai postato viene usata l'istanza di default del Form2 il che non mi sembra proprio corretto.
A parer mio il codice corretto, se ho capito bene il problema è più o meno(a seconda delle esigenze) così:
Tu, omuncolo! Come ti permetti di contraddire il Totem???
A parte gli scherzi, quello che fai tu è sbagliato, infatti. Non fai altro che creare un nuovo form, quindi una variabile locale (tra l'altro nemmeno lo visualizzi con Show), cambiarne il valore della label, e poi lasciarlo distruggere dal garbage collector non appena si esce dalla procedura, con il risultato di non ottenere proprio niente.
E' usando l'istanza di default del form, invece, che si ottiene il risultato giusto: ovviamente ho presunto (e ci ho visto giusto) che il form2 visualizzato fosse proprio quello di default. Logicamente, se fosse stato creato a runtime, la metodologia sarebbe stata differente.
Non lasciarti impressionare dalle nostre incomprensioni....non è niente di così difficile come ti stiamo facendo sembrare.
Testo quotato
Postato originariamente da Il Totem: Tu, omuncolo! Come ti permetti di contraddire il Totem???
Testo quotato
A parte gli scherzi, quello che fai tu è sbagliato.....
.
Assolutamente NO!!!
Non è per niente sbagliato
Ti sei fermato al mio primo post dove ho indicato una soluzione limitandomi al concetto senza scrivere per esteso il codice che avrei usato per l'esigenza.
Nel post successivo ho indicato come mostrare il Form istanziato CORRETTAMENTE non usando l'istanza di classe che è concettualmente SBAGLIATO.
Testo quotato
E' usando l'istanza di default del form, invece, che si ottiene il risultato giusto
La cosa giusta è creare una nuova istanza del Form ed eventualmente fare riferimento a quella per accedere ai suoi controlli.
Quello che dici tu può essere giusto solo a scopo di esempio per capire come raggiungere un controllo residente in un Form.
Il concetto di programmazione orientata agli oggetti non è opinabile.
In effetti non avevo letto il secondo post, e la mia risposta era solo per il primo.
Ma se, come affermi tu, fosse giusto creare ogni volta un nuovo form, a cosa servirebbe la classe My.Forms? Inoltre, se si facesse a modo tuo, si userebbe ogni volta una quantità doppia di risorse (perché il secondo form esiste anche se non è visibile). E poi, se il concetto di programmazione ad oggetti non è opinabile, mi spieghi per quale ragione Form2 esiste solo in quanto membro di Form1? Infatti se si volesse usare quel form si avrebbero due scelte: usare l'istanza (tra l'altro private) presente in form1 (il che implica sempre l'esistenza di form1), o inizializzare una nuova istanza di form2, il che implica pur sempre l'uso di quantità superflua di memoria. Come se non bastasse, non esiste un'istanza di form2 comune a tutto il progetto, il che è proprio l'obbietivo dell'esistenza di My.Forms.
Il New per i form si usa solo in quasti casi:
- Creazione di form figli;
- Creazione di dialogs (nel caso non siano comuni a tutti i form);
- Creazione di form temporanei (es.: visualizzazione di un'immagine).
Noterai che in My.Forms sono contemplati solo quei form non dialog che espongono un costruttore senza parametri.
Col tuo codice, in definitiva, si può modificare form2 solo da form1, e si usa più memoria, mentre col mio lo si può usare da qualsiasi parte dell'applicativo, senza "sprecare" le istanze di default di My.Forms. A me sembra conveniente, e inoltre ho fornito un po' di obiezioni alla tua scelta, che non è sbagliata, sia chiaro, ma che secondo me non dovrebbe essere usata in questo specifico caso.
In effetti non avevo letto il secondo post, e la mia risposta era solo per il primo.
Ma se, come affermi tu, fosse giusto creare ogni volta un nuovo form, a cosa servirebbe la classe My.Forms? Inoltre, se si facesse a modo tuo, si userebbe ogni volta una quantità doppia di risorse (perché il secondo form esiste anche se non è visibile). E poi, se il concetto di programmazione ad oggetti non è opinabile, mi spieghi per quale ragione Form2 esiste solo in quanto membro di Form1? Infatti se si volesse usare quel form si avrebbero due scelte: usare l'istanza (tra l'altro private) presente in form1 (il che implica sempre l'esistenza di form1), o inizializzare una nuova istanza di form2, il che implica pur sempre l'uso di quantità superflua di memoria. Come se non bastasse, non esiste un'istanza di form2 comune a tutto il progetto, il che è proprio l'obbietivo dell'esistenza di My.Forms.
Il New per i form si usa solo in quasti casi:
- Creazione di form figli;
- Creazione di dialogs (nel caso non siano comuni a tutti i form);
- Creazione di form temporanei (es.: visualizzazione di un'immagine).
Noterai che in My.Forms sono contemplati solo quei form non dialog che espongono un costruttore senza parametri.
Col tuo codice, in definitiva, si può modificare form2 solo da form1, e si usa più memoria, mentre col mio lo si può usare da qualsiasi parte dell'applicativo, senza "sprecare" le istanze di default di My.Forms. A me sembra conveniente, e inoltre ho fornito un po' di obiezioni alla tua scelta, che non è sbagliata, sia chiaro, ma che secondo me non dovrebbe essere usata in questo specifico caso.
Effettivamente il tuo ragionamento non fa una piega ..... mi sento comunque di dissentire riguardo all'utilizzo del costruttore New solo nei casi specifici elencati nel tuo specchietto.
L'esistenza del namespace My.Forms, non è comunque in nessun modo legato al fatto che tu voglia o meno usare l'istanza di classe del Form.
E' sicuramente una comodità introdotta da Microsoft per raggiungere facilmente alcune risorse.
Ad ogni modo, ripeto, il tuo ragionamento non fa una piega .... ho anche provato a creare uno scenario che potesse smentire le tue affermazioni ma .... non ci sono ancora riuscito.
Pertanto, ritiro tutti i miei del post precedente, in quanto, temo tu abbia ragione....fermo restanto che io continuerò a creare dei nuovi riferimenti all'oggetto anche nel caso dei Form.