How can I format a value in the form of money (for example, 123,456.50) in a text field when typing?

I want to format the contents of my text box during input. I know that I can do this in an event LostFocus, but I want it to be done during input. Does anyone have any suggestions on how to implement this?

+3
source share
3 answers

Instead of trying to fine-tune this yourself, consider using a control specifically designed to handle formatted input. In particular, you need oneMaskedTextBox , which is an extended version of an existing text field that allows you to set a "mask" used to distinguish between valid and invalid input. The user even gets visual feedback as they are entered.

Mask, , , . . , - : $999,999.00, 0 999999. , , - , .

+1
Private Sub TBItemValor_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TBItemValor.KeyPress
        If (Char.IsDigit(e.KeyChar) = False AndAlso Char.IsControl(e.KeyChar) = False AndAlso Char.IsPunctuation(e.KeyChar) = False) OrElse Not IsNumeric(Me.TBItemValor.Text & e.KeyChar) Then
            e.Handled = True
        End If
    End Sub
0

Dim strCurrency As String = "" Dim allowedKey As Boolean = False

Private Sub TextBox1_KeyDown (ByVal sender as object, ByVal e As System.Windows.Forms.KeyEventArgs) processes TextBox1.KeyDown If (e.KeyCode> = Keys.D0 and e.KeyCode <= Keys.D9) OrElse (e.KeyCode> = Keys.NumPad0 And e.KeyCode <= Keys.NumPad9) OrElse e.KeyCode = Keys.Back then acceptedKey = True else acceptedKey = False End If End Sub

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    ' Check for the flag being set in the KeyDown event.
    If acceptableKey = False Then
        ' Stop the character from being entered into the control since it is non-numerical.
        e.Handled = True
        Return
    Else
        If e.KeyChar = Convert.ToChar(Keys.Back) Then
            If strCurrency.Length > 0 Then
                strCurrency = strCurrency.Substring(0, strCurrency.Length - 1)
            End If
        Else
            strCurrency = strCurrency & e.KeyChar
        End If

        If strCurrency.Length = 0 Then
            TextBox1.Text = ""
        ElseIf strCurrency.Length = 1 Then
            TextBox1.Text = "0.0" & strCurrency
        ElseIf strCurrency.Length = 2 Then
            TextBox1.Text = "0." & strCurrency
        ElseIf strCurrency.Length > 2 Then
            TextBox1.Text = strCurrency.Substring(0, strCurrency.Length - 2) & "." & strCurrency.Substring(strCurrency.Length - 2)
        End If
        TextBox1.Select(TextBox1.Text.Length, 0)

    End If

e.Handled = True End Sub

@stynx

-1
source

Source: https://habr.com/ru/post/1786061/


All Articles