Вы должны использовать KeyPress
событие и добавить ниже логику для определения того, что нажата и когда введенное значение будет размещен.
Когда вы устанавливаете значение e.Handled
в значение true, вы сообщаете системе игнорировать вход пользователя.
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// Only allow digits, decimal points and control characters (Backspace, delete, etc)
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
(e.KeyChar != '.'))
{
e.Handled = true;
}
int PointIndex = (sender as TextBox).Text.IndexOf('.');
// only allow one decimal point and one digit before decimal point
if (((e.KeyChar == '.') && PointIndex > -1) ||
(e.KeyChar == '.' && textBox1.SelectionStart > 1) ||
(PointIndex == 1 && textBox1.SelectionStart <= PointIndex))
{
e.Handled = true;
}
}
Этот код проверяет ввод пользователей во время их ввода.
EDIT:
Кроме того, поскольку этот код только подтверждает вход как пользователь печатает вы также хотите, чтобы предотвратить их вставив в недопустимых значений. Вы можете сделать это, установив для свойства ShortcutsEnabled
текстового поля значение false.
отправьте код, который вы в настоящее время используете для ограничения цифр. – CathalMF
if (0> 1 до "." && 0 - первая цифра) { Удалить все нули до "." и оставил один; } – Ovidzikas
Попробуйте использовать 'NumericUpDown' или' MaskedTextBox' –