2011-12-14 3 views
1

Я думаю, что я пытаюсь сделать что-то вроде описанного here, но на другом языке.auto-format десятичный текст, когда пользователь вводит числа

У меня есть текстовое поле, которое позволяет вводить десятичный номер. Я хочу исключить необходимость нажатия десятичного ключа. У меня есть область ввода в текстовом поле, установленном на «Номер», поэтому у пользователя есть числа и десятичное число. Вот пример того, что я хотел бы видеть:

Начальный экран:

  • 0,00

Нажмите на номер 5:

  • 0,05

Нажмите номер 8:

  • 0,58

Затем нажмите 3 - 2:

  • 58.32

И если пользователь нажимает клавишу удаления:

  • 5,83

Я не уверен, как это сделать. Я думаю, что значение по умолчанию для текстового поля равно 0,00, а в событии OnKeyDown взять их номер и установить значение соответствующим образом?

+0

Да, использование события KeyDown было бы способом сделать это. – Etch

+1

Еще один важный момент - KeyDown не срабатывает, когда вы вставляете что-то. Вам также нужно будет прослушать TextChanged. –

+0

Спасибо за это. Я об этом не думал. –

ответ

1

звучит так, будто вы почти там.

If the key is a digit, 
    float work = float.tryparse(textbox.value) 
    work *= 10; // move decimal 
    work += key/100; // move new digit 2 decimals right 
    textbox.value = work.ToString(); 

Для backspace, я бы не стал утруждатьсь математикой, просто подстроим последний символ.

+0

Я попробую и посмотрю, что произойдет. Я склоняюсь к пользовательскому maskedtextbox, с которым я связан в ответе TysHTTP. –

+0

cool, сообщите нам, что работает лучше? –

1

Почему бы не использовать MaskedTextBox, с такой маской: 00.00 и установить RightToLeft в Yes? Я думаю, вы можете выполнить только то, что вам нужно.

+0

Ow, я не видел тег Windows 7 телефона, я не уверен, что вы можете использовать MaskedTextBox там. – Tys

+0

Интересно. Я не думал о MaskedTextBox ... Не похоже, что он существует, но я нашел этот пост на форумах SL: http://forums.silverlight.net/post/496643.aspx. Я должен буду сделать этот заказный контроль выстрелом. –

+0

К сожалению, класс MaskedTextProvider не разрешается в сборке System.ComponentModel в WP7. –

Смежные вопросы