用户输入数字时自动格式化十进制文本

时间:2011-12-14 21:34:07

标签: c# wpf silverlight windows-phone-7

我想我正在尝试做一些类似描述here的内容,但是使用不同的语言。

我有一个文本框,允许输入基于小数的数字。我想消除点击十进制密钥的需要。我将文本框上的输入范围设置为“数字”,因此用户可以使用数字和小数点击。这是我想看到的一个例子:

初始显示:

  • 0.00

点按数字5:

  • 0.05

点按数字8:

  • 0.58

然后点击3 - 2:

  • 58.32

如果用户点击删除键:

  • 5.83

我不知道该如何解决这个问题。我认为文本框的默认值是0.00,并且在OnKeyDown事件中,取他们的数字,并正确设置值?

2 个答案:

答案 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();

对于退格键,我不打扰数学,只是将最后一个字符子串起来。

答案 1 :(得分:1)

为什么不使用MaskedTextBox,这样的掩码:00.00并将RightToLeft设置为是? 我认为你可以完成你所需要的。