Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
non sono riuscito trovare nessun esempio in rete e sono a chiedere il procedimento per effettuare la moltiplicazione su una colonna del DataGridView.
in una colonna del DataGridView sono inseriti i "Valori numerici con decimali" ed alla seconda colonna è dedicata agli "Importi".
Inserendo un importo intero alla TextBox con evento KeyPress e, moltiplicato con i valori numerici inseriti alla colonna del DataGridView, dovrebbero apparire alla colonna "Importo", i risultati.
Auguro che possiate suggerire e fiducioso, ringrazio anticipatamente Domenico.
Gent.mo Carlo, ringrazio della gradita disponibilità e mi scuso se faccio perdere del tempo prezioso e ne sono rammaricato. Il calcolo della somma di una colonna funziona perfettamente. Non riesco a riempire la colonna adiacente con gli importi inserendo un numero intero alla TextBox con evento KeyPress.
Ho dichiarato una variabile: string Numero
Riporto il codice della TextBox con l'evento KeyPress che accetta solo numeri:
Ok.
Con questo codice immetti sulla TextBox9 una stringa che può contenere numeri punti e virgole, che ritrovi nella variabile Numero quando si preme enter.
Attenzione con il tuo codice la stringa immessa non è detto che sarà un numero valido es: 123,,,..456 sarà inseribile.
Che problemi hai per usare la stringa Numero come moltiplicatore di una cella del DataGridView e mettere il risultato nella cella apposita?
Tu già sai che per leggere/scrivere le celle si opera come una battaglia navale:
Codice sorgente - presumibilmente Plain Text
dataGridView1.Rows[r].Cells[c] // r e c = riga e colonna
Non so quale sia il problema, posso ipotizzare che non hai tenuto tesoro delle info che ti ho dato nella discussione precedente.
Windows tiene conto della cultura impostata, se è "it-IT" il separatore delle terzine è il punto e il separatore dei decimali la virgola: 10.200.700,50 diecimilioniduecentomilasettecento,50
Se inserisci il numero all'americana 10,200,700.50 e la cultura è italiana tryparse o parse eseguirà la convesione in modo sbagliato o non la eseguirà.
Devi decidere con quale cultura lavorare e comportarti di conseguenza.
Il programma può anche adattarsi alla cultura che vuoi con scelta dell'utente o con automatismi più o meno fantasiosi. Tutto dipende da chi deve usare il programma e su quale pc.
La regola è che il programma usa la cultura del S.O. per esempio se è "it-IT" l'utente DEVE immettere i numeri con la virgola decimale. Se l'utente è un caprone e immette un numero con il punto decimale, va avvertito dicendogli che DEVE usare la virgola.
Oppure nel tuo caso visto che controlli i caratteri immessi, accetta solo la virgola decimale se lavori all'italiana.
chiedo scusa, stamane per la fretta ho confuso nell'esporre il problema.
La cultura impostata è italiana:
Codice sorgente - presumibilmente C# / VB.NET
CultureInfo culture = new CultureInfo("it-IT");
Il tutto funziona perfettamente, ho inserito un ciclo per avere l'importo per tutta la colonna. Avrei gradito che all'importo nella colonna sia mostrato il punto (separatore di migliaia). Tutto qui.
se la cultura è "it-IT" verrano messi i punti sulle migliaia e le virgole sul separatore decimale.
Nel tuo caso specifico ricordo che i valori venivano presi da un file .xml con i numeri formattati all'americana. Se hai cambiato l'xml e hai formattato i numeri all'italiana sei a posto.
Se nell'xml hai ancora i numeri formattati all'americana per evitare che nel DataGridView ci siano due formattazioni diverse, devi leggere il file .xml con la cultura impostata a "en-US" e mettere i valori convertiti in double o decimal su delle variabili temporanee e poi impostando la cultura "it-IT" scrivere le variabili temporanee nel DataGridView con .ToString("#,##0.00")
messo in pratica:
Codice sorgente - presumibilmente C#
// per allineare tutto a destra ed avere tutto in colonna