Как я могу заставить TextBox WPF заботиться о десятичной точке?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу заставить TextBox WPF заботиться о десятичной точке?

Сообщение Anonymous »

Итак, у меня есть TextBox, в котором можно использовать только числа и десятичные точки. Я хочу, чтобы пользователю было разрешено вводить только 1 десятичную точку.

Вот код, который запускается при событии PreviewTextInput: (Некоторые части кода немного избыточны, но они выполняют свою работу)

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

    private void PreviewTextInput(object sender, TextCompositionEventArgs e)
{

TextBox textBox = (TextBox)sender;

if (e.Text == ".")
{

if (textBox.Text.Contains("."))
{

e.Handled = true;
return;

}

else
{
//Here I am attempting to add the decimal point myself
textBox.Text = (textBox.Text + ".");
e.handled = true;
return;

}

}
else
{
e.Handled = !IsTextAllowed(e.Text);
return;
}
}

private static bool IsTextAllowed(string text)
{
Regex regex = new Regex("[^0-9.-]+"); //regex that matches disallowed text
return !regex.IsMatch(text);
}
Проблема в том, что первая введенная десятичная точка не является «значительной», пока за ней не следует номер. Итак, если пользователь вводит 123., а вы должны установить точку останова и проверить значение textBox.text, это будет 123. Я знаю, что это происходит, потому что textBox привязан к Double, поэтому он пытается быть «умным» и забыть об этих в настоящее время «незначительных» значениях (The «.»).

С моим кодом не должно быть ничего плохого, я просто надеялся заставить textBox пропустить ненужное (?) автоматическое форматирование .

Есть ли способ заставить текстовое поле «заботиться» об этой первой десятичной точке?

Возможно, дубликат, на который так и не был получен ответ.

или

*Есть ли другой подход к ограничению количества десятичных знаков?» (Я много сделал исследований в этой области, и я не думаю, что есть какие-либо другие варианты.)

Подробнее здесь: https://stackoverflow.com/questions/150 ... imal-point
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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