WPF数字文本框

时间:2012-09-04 02:33:52

标签: c# .net wpf

如何使用带有两个小数点的WPF编号文本框,例如:

它将以0.00开头,当用户键入1时,该值将为0.01,接下来当用户用户键入2时,该值将为0.21。

当用户键入5003时,该值为30.05。

揍你。

2 个答案:

答案 0 :(得分:4)

当然,您可以随时将@JesseJames实施一个。但是,我建议你更好地使用现有的,我相信Extended WPF Toolkit就是你需要的,正是IntegerUpDown(你可以指定你需要的面具,它附带5) :

<xctk:IntegerUpDown FormatString="N0" Value="1" Increment="1" Maximum="100"/>

答案 1 :(得分:-1)

您可以在KeyDown事件处理程序中实现它。设置事件参数属性e.Handle = true并计算输出数。

不要像我一样写,这只是一个例子:))

public partial class MainWindow : Window
{
    private StringBuilder sb = new StringBuilder();

    public MainWindow()
    {
        InitializeComponent();
    }

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        e.Handled = true;
        switch (e.Key)
        {
            case Key.D0: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 0); break; }
            case Key.D1: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 1); break; }
            case Key.D2: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 2); break; }
            case Key.D3: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 3); break; }
            case Key.D4: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 4); break; }
            case Key.D5: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 5); break; }
            case Key.D6: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 6); break; }
            case Key.D7: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 7); break; }
            case Key.D8: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 8); break; }
            case Key.D9: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 9); break; }
        }
        textBox1.Text = sb.ToString();
    }
}

在此示例中,您还需要处理“退格”命中以清除StringBuilder。要获取该值,请使用解析器:double result = double.Parse(sb.ToString()); +处理NumPad号码!