validar separador punto multiplicar moneda miles formato ejemplo dejar decimales dar con coma c# numbers decimal limit digit

separador - string format c# ejemplo



Limite los números después del decimal en el evento de pulsación de tecla (5)

Al presionar las teclas, formatea la cadena y establece textBox.Text en la cadena formateada.

TextBox.Text = String.Format("{0:N3"}", textBox.Text)

Este formato particular corta el número en el 3er decimal.

Estoy usando el siguiente código para tomar solo dígitos del usuario y solo un punto decimal, eso está funcionando bien para mí en KeyPress Event:

if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != ''.'') { e.Handled = true; } if (e.KeyChar == ''.'' && (sender as TextBox).Text.IndexOf(''.'') > -1) { e.Handled = true; }

Ahora quiero limitar los números / dígitos después del decimal / punto, es decir, 35.25468, significa que solo se necesitan 6 números / dígitos después del punto / decimal.

Ponme al día !


En el evento de pulsación de tecla y validar evento, cuente el número de caracteres después del punto decimal. Al presionar la tecla, suprímala. al validar, elimine los decimales adicionales. Asegúrese de obtener el carácter de punto decimal de NumberFormatInfo, no todas las culturas usan ''.'', Es decir. en Francia, su punto decimal es en realidad una coma


puedes agregar un cheque adicional como este

TextBox textBox = (TextBox) sender; if (textBox.Text.IndexOf(''.'') > -1 && textBox.Text.Substring(textBox.Text.IndexOf(''.'')).Length >=3) { e.Handled = true; }

Tenga en cuenta que la subcadena incluirá el ''.'' y por lo tanto el cheque es >=3 .


Tenía textBox.SelectionLength == 0 para permitir la modificación del texto seleccionado:

private void price_tb_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != ''.'') { e.Handled = true; } TextBox textBox = (TextBox)sender; // only allow one decimal point if (e.KeyChar == ''.'' && textBox.Text.IndexOf(''.'') > -1) { e.Handled = true; } if (!char.IsControl(e.KeyChar) && textBox.SelectionLength == 0) { if (textBox.Text.IndexOf(''.'') > -1 && textBox.Text.Substring(textBox.Text.IndexOf(''.'')).Length >= 3) { e.Handled = true; } } }


private void price_tb_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != ''.'') { e.Handled = true; } // only allow one decimal point if (e.KeyChar == ''.'' && (sender as TextBox).Text.IndexOf(''.'') > -1) { e.Handled = true; } if (!char.IsControl(e.KeyChar)) { TextBox textBox = (TextBox)sender; if (textBox.Text.IndexOf(''.'') > -1 && textBox.Text.Substring(textBox.Text.IndexOf(''.'')).Length >= 3) { e.Handled = true; } } }

Este código te ayudará. Solo toma un lugar decimal y dos dígitos después de un lugar decimal y puede cambiarlo en consecuencia.