Formattare Textbox con €

di il
3 risposte

Formattare Textbox con €

Ciao a tutti, vorrei formattare una textbox in modo che quando vado a scriverci direttamente, mi converta i numeri in formato valuta con l'euro.

io faccio in questo modo:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim numero As Double = TextBox1.Text

        TextBox2.Text = numero.ToString("€###,###.00")
        End Sub

Ovviamente così funziona ma io non vorrei usare un button per eseguire questa operazione, ne tantomeno due textbox, ho provato a usare l'evento keydown per esempio ma il primo numero lo converte poi ovviamente quello messo dopo genera l'errore in quanto presente la formattazione.

se metto 100 scrive € 100,00 quindi se aggiungo il 2 il testo è 2€ 100,00 e va in errore…. è ovvio.

come potrei risolvere questa cosa?

grazie

3 Risposte

  • Re: Formattare Textbox con €

    Salve,

    la “cosa” non e' proprio banale… la soluzione piu' semplice consiste nell'utilizzare l'evento “lostfocus” (_Leave)  e provvedere a gestire la formattazione come desiderato, dopo aver “convertito” (laddove possibile) il contenuto (che e' una stringa di testo) in un valore numerico.

    Altra soluzione piu' “facile” e' l'utilizzo del componente MaskedTextBox, vedi ad esempio https://learn.microsoft.com/it-it/dotnet/desktop/winforms/controls/walkthrough-working-with-the-maskedtextbox-control?view=netframeworkdesktop-4.8

    L'ultima soluzione molto radicale e sicuramente piu' complicata e' ad esempio la creazione di un “controllo” che erediti da TextBox e gestire in questo componente tutti gli eventi interessanti, KeyDown, KeyPress, Leave, Enter, …….
    Qui potrai direttamente alla “pressione” del tasto gestire la formattazione, ma partire da zero e' sicuramente molto piu' complesso delle altre soluzioni..

    salutoni romagnoli
    – 
    Andrea

  • Re: Formattare Textbox con €

    Grazie Andrea…. avevo intuito non fosse cosa abbastanza semplice… pensavo ci fosse una propietà specifica che invece non c'è.

    Ora sto vedendo le soluzioni da te proposte se sono per il mio livello…

    Volevo gestire altrimenti in altro modo:

    Inserisco un numero

    lo converto prima dell'inserimento nel Database

    però non so se quando lo ricarico con il simbolo € e non viene tolto mi rigenera lo stesso problema….

    se dovessi usare il software solo io andrebbe bene… saprei come fare ma serve a me e un mio amico quindi voglio ridurre al minimo le possibilità di errore ( se non proprio eliminarle)

    Potrei in caso estrarre solo il numero dalla textbox e poi convertirlo e riscriverlo?

    Grazie a tutti

  • Re: Formattare Textbox con €

    Salve,

    20/01/2023 - orione1976 ha scritto:


    Inserisco un numero

    lo converto prima dell'inserimento nel Database

    non farlo… o almeno, io non lo farei… cosa farei e' recuperare la valuta e la salverei separatamente, se proprio serve (cioe' nel caso tu abbia valorizzazioni in svariate valute), e il valore monetario salvalo sempre e comunque con un tipo appropriato (ad esempio DECIMAL(18,4) in SQL Server)… ma sicuramente NON trasformare il valore € 1.234,56 in una stringa di testo come mi pare aver capito intendessi.

    nel caso di cui sopra, quindi, recupererei i caratteri del simbolo valuta “€”, e il valore “1.234,56” va converito in numerico

    20/01/2023 - orione1976 ha scritto:


    voglio ridurre al minimo le possibilità di errore ( se non proprio eliminarle)

    in questo caso, per ridurre/rimuovere l'errore, togli direttamente il simbolo. Fai ad esempio una combo a sx del valore con il simbolo valuta (se ti serve la possibilita' di gestire piu' valute), e gestisci la textbox come numerico puro…

    20/01/2023 - orione1976 ha scritto:


    potrei in caso estrarre solo il numero dalla textbox e poi convertirlo e riscriverlo?

    si, ma sei soggetto al fatto che l'editing possa sporcare in maniera fatale il contenuto.

    di nuovo, propenderei per una combo a sx… :D

    salutoni romagnoli
    – 
    Andrea

Devi accedere o registrarti per scrivere nel forum
3 risposte