I am using the following code to take only digits from user and only one decimal point , that is working fine for me on 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;
}
Now I want to Limit the numbers/Digits after the decimal/dot i.e 35.25468, means it take only 6 numbers/digits after the dot/decimal.
Update me !
This code will help you. It takes only one decimal place and two digit after one decimal place and you can change it accordingly.
I had
textBox.SelectionLength == 0
to allow the modification of selected text:On the keypress event, and or validate event, count the number of chars after decimal point. On key press, suppress it. on validate, remove extra decimal places. Make sure you're getting the decimal point char from NumberFormatInfo, not all cultures use '.', ie. in France, their decimal point is actually a comma
you can add an additional check like this
Note, the Substring will include the '.' and hence the check is
>=3
.On keypress, format the string and set the
textBox.Text
to the formatted string.This particular format cuts off the number at the 3rd decimal.