如何创建具有十进制值的文本框

时间:2012-04-01 07:07:43

标签: c# winforms

我需要在我的应用程序中添加一个文本框,它开始显示值0.00,就像ATM一样,当你键入数字时,它会保留两个小数点,直到满足值,例如序列为最终值1023.00将是(我输入)

0.01
0.10
1.02
10.23
102.30
1023.00

这可以在Windows窗体应用程序中执行吗?我只是不确定如何去做。 谢谢。

1 个答案:

答案 0 :(得分:3)

在这种情况下,我不会使用文本框,而是标签或只读文本框。要获取用户输入,只需使用表单上的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);
    }

注意:为什么不使用文本框 - 因为它的内部逻辑带有select / replace / remove / type是如此过于复杂,以至于您需要检查的情况只是要处理得很好 - 所以不要试图更改大炮你应该从吊索开始吊索。