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 2010 somma tra textbox
Forum - C# / VB.NET - vb.net 2010 somma tra textbox

Avatar
trattobasso (Normal User)
Pro


Messaggi: 89
Iscritto: 02/05/2007

Segnala al moderatore
Postato alle 17:47
Venerdì, 03/08/2012
ciao a tutti, vi espongo il mio problema e come l'ho risolto (malino...) in vista di qualche piccolo consiglio.
Allora dovrei fare la somma di alcune textbox (solo numeri ovviamente) e man mano che inserisco i vari valori nelle textbox, in quella dedicata al risultato vederlo man mano che compilo le prime.
Ho inserito nell'evento TextChanged di ogni textbox questo codice per calcolare automaticamente il risultato:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim totale As String
  2.         totale = Val(txt_cantinole.Text) + Val(txt_autorimesse_s.Text) + Val(txt_autorimesse_c.Text) + Val(txt_androni.Text) + Val(txt_logge.Text)
  3.         txt_totale.Text = totale


Sembra funzionare fin quando i numeri sono interi ma, quando uso le virgole (devo per forza usare le virgole) nella textbox del risultato non le accetta. Probabilemente è una caratteristica di "Val".
Il bello e simpaticoè che se in quelle delle somme uso il punto come separatore, nel textbox risultato il calcolo viene effettuato correttamente e con la virgola..... :)

Capisco che funziona lo stesso ma, non è elegantissimo e vorrei capire il perchè del comportamento.
ciao


trattobasso ha allegato un file: 1.jpg (19760 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da trattobasso il 03/08/2012 alle 17:48
PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 18:32
Venerdì, 03/08/2012
Il problema è proprio l'istruzione val..
Se guardi nella documentazione dice:

Note   The Val function recognizes only the period (.) as a valid decimal separator. When different decimal separators are used, as in international applications, use CDbl or CInt instead to convert a string to a number.
Fonte:
http://msdn.microsoft.com/en-us/library/k7beh1x9(v=vs.71). ...

Magari potresti pensare a fare un replace, prima della conversione, sostituendo "," con ".". Però sarebbe opportuno anche verificare che vengano inserito solo numero e non altri caratteri alfanumerici..
Ciao!:)

Ultima modifica effettuata da Renny il 03/08/2012 alle 18:35
PM Quote
Avatar
trattobasso (Normal User)
Pro


Messaggi: 89
Iscritto: 02/05/2007

Segnala al moderatore
Postato alle 0:58
Sabato, 04/08/2012
Ciao Renny, infatti immaginavo potesse essere quello.
Ho già previsto usando l'evento KeyPress che l'utente possa inserire solo numeri da 0 a 9 e il punto tanto è che poi alla fine simpaticamente mette lui la virgola come servirebbe a me.
Grazie e 1000 di aver condiviso questa cosa e buon proseguimento.
Ciao a tutti.

PM Quote