Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [Vb.Net] Come aggiungere 1 cifra ad 1 label
Forum - C# / VB.NET - [Vb.Net] Come aggiungere 1 cifra ad 1 label - Pagina 2

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Jeremy (Normal User)
Pro


Messaggi: 134
Iscritto: 08/02/2009

Segnala al moderatore
Postato alle 21:27
Giovedì, 19/03/2009
Testo quotato

Postato originariamente da fabriziorocca:

ehm , non funziona, a me basta solo che ogni volta che clicco sul button si aggiunga "1" nella label2 della form2

clicco 1 volta, label2.Text = 1
2 volta , label2.Text = 2

... e così all'infinito



Innanzitutto dal Form1 devi creare una nuova istanza del Form2 quindi

Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2. Private Frm as new form2
  3.  
  4. private sub Button1_click()handles button1.click
  5. frm.show
  6. frm.activate
  7. if frm.label2.text=string.empty then frm.label2.text=0
  8. frm.label2.text=int32.parse(frm.label2.text)+ 1
  9. end sub
  10. End Class



prova questo codice .... poi ci ragioniamo sopra.(è solo un esempio)

Facci sapere...
Ciao

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:53
Venerdì, 20/03/2009
Testo quotato

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ì:

Codice sorgente - presumibilmente C# / VB.NET

  1. Dim Frm as new Form2
  2.  Frm.Label2.Text = Int32.Parse(Frm.Label2.Text) + 1




Ciao



Tu, omuncolo! Come ti permetti di contraddire il Totem??? :rotfl:
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.

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:54
Venerdì, 20/03/2009
e io che pensavo che fosse una cosa facile !!!

PM
Avatar
Jeremy (Normal User)
Pro


Messaggi: 134
Iscritto: 08/02/2009

Segnala al moderatore
Postato alle 23:22
Venerdì, 20/03/2009
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??? :rotfl:


:hail::hail::hail:

Testo quotato


A parte gli scherzi, quello che fai tu è sbagliato.....

.
Assolutamente NO!!!:nono::nono:
Non è per niente sbagliato:nono::nono:

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


:nono::nono::nono:

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.

Ciao:rotfl::rotfl:

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 14:56
Sabato, 21/03/2009
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.

P.S.: l'uso di My.Forms è contemplato dalla documentazione ufficiale Microsoft proprio per questo tipo di necessità: http://msdn.microsoft.com/it-it/library/87y2hdsf(VS.80).aspx.

Ultima modifica effettuata da Il Totem il 21/03/2009 alle 14:59
PM
Avatar
fabriziorocca (Normal User)
Guru


Messaggi: 1162
Iscritto: 22/03/2009

Segnala al moderatore
Postato alle 19:50
Domenica, 22/03/2009
scusate, io ho risolto tutto senza bisogno di codici strani

da applicare nel button1 della form1

Codice sorgente - presumibilmente Plain Text

  1. Form2.Label2.Text +=1




se invece voglio sottrarre una cifra


Codice sorgente - presumibilmente Plain Text

  1. Form2.Label2.Text -=1



***FINE***

PM
Avatar
fabriziorocca (Normal User)
Guru


Messaggi: 1162
Iscritto: 22/03/2009

Segnala al moderatore
Postato alle 19:51
Domenica, 22/03/2009
scusate, ma io avevo 50 messaggi, dopo essere diventato un membro sono scomparsi tutti ??
ed è scomparsa anche la mia firma e il mio avatar :(

PM
Avatar
Jeremy (Normal User)
Pro


Messaggi: 134
Iscritto: 08/02/2009

Segnala al moderatore
Postato alle 22:16
Domenica, 22/03/2009
Testo quotato

Postato originariamente da Il Totem:

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.

P.S.: l'uso di My.Forms è contemplato dalla documentazione ufficiale Microsoft proprio per questo tipo di necessità: http://msdn.microsoft.com/it-it/library/87y2hdsf(VS.80).aspx.



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 :nono: :nono: 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.

Ciao a presto.


PM
Pagine: [ 1 2 3 ] Precedente | Prossimo