PreviewTextInput удаляет десятичную точку, если это последний символ, но не в середине.C#

Место общения программистов C#
Ответить
Anonymous
 PreviewTextInput удаляет десятичную точку, если это последний символ, но не в середине.

Сообщение Anonymous »

Я использую PreviewTextInput для проверки десятичного числа. Вот мой код:

Код: Выделить всё

private void AmountTextBox_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
{
TextBox t = sender as TextBox;
string newText = t.Text.Insert(t.SelectionStart,e.Text);

Regex regex = new Regex(@"^[0-9]{1,12}(?:\.[0-9]{0,2})?$");
e.Handled = !regex.IsMatch(newText);
}
Правильно принимаются только цифры и одна десятичная точка, но десятичная точка принимается только в том случае, если пользователь вставляет ее между числами. Если десятичное число вводится в конце строки, оно не добавляется в текстовое поле, даже если регулярное выражение возвращает совпадение (т. е. e.Handled = false). Естественно, при вводе значения пользователь вводит левую часть десятичной дроби, затем десятичную точку, а затем правую часть десятичной точки. Почему десятичная дробь опускается? Это артефакт обработки PreviewTextInput? Я просто упускаю что-то очевидное?

Подробнее здесь: https://stackoverflow.com/questions/785 ... -not-if-it
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»