如何创建具有十进制值

问题描述:

我需要添加在我的应用程序中的文本框启动与价值0.00就像一个ATM显示,当你键入数字则保持两个小数点,直到满意值的文本框例如序列结束的1023.00的值将是(如I型)如何创建具有十进制值

0.01 
0.10 
1.02 
10.23 
102.30 
1023.00 

这是可能做在一个视窗形式的应用程序?我只是不知道该怎么去做。 谢谢。

+1

[Winforms Format TextBox To Currency](http://stackoverflow.com/questions/7258562/winforms-format-textbox-to-currency) – ChrisWue 2012-04-01 07:11:48

在这种情况下我不会用一个文本框,而是一个标签或只读文本框。要获取用户输入的只是使用key-press事件表单上(你必须启用表单上KeyPreview太) - 然后只记得键/数字压和输出你的目标格式 - 应该是一个相当简单的算法(Char.IsNumber,和String.Format可能会派上用场):

private int _inputNumber = 0; 
    private void Form_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) 
    { 
     if (!Char.IsNumber(e.KeyChar)) return; 
     _inputNumber = 10*_inputNumber + Int32.Parse(e.KeyChar.ToString()); 
     ReformatOutput(); 
    } 

    private void ReformatOutput() 
    { 
     myOutput.Text = String.Format("{0:0.00}", (double)_inputNumber/100.0); 
    } 

注:为什么不使用文本框 - 因为它的内部逻辑与选择/替换/删除/类型是这样过于复杂,你必须检查的情况下只是为了多要优雅地处理 - 所以不要试图将大炮变成吊索,而应该从吊索开始。

+0

非常感谢,我可以在用户中使用这些函数控制是在表单中? – user710502 2012-04-01 07:45:36

+0

是的,我认为应该工作太,但如果你不能得到一个专注于你的用户控件将KeyPreview可能是一个问题 - 只是尝试了一下。 – Carsten 2012-04-01 07:58:33

+0

呀它的作品......我现在唯一的问题是,我有在表单中单击当我在那个屏幕到达的数字来开始填充... – user710502 2012-04-01 08:14:29