1

我怎样才能有一个带两个小数点的 WPF 数字文本框,例如:

它将从 0.00 开始,当用户输入 1 时,值将是 0.01,然后当用户输入 2 时,值将是 0.21。

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

谢谢你。

4

2 回答 2

4

当然,您始终可以按照@JesseJames 的建议实现一个。但是,我建议您更好地使用现有的,我相信Extended WPF Toolkit是您所需要的,正是 IntegerUpDown(您可以指定您需要的掩码,它带有 5 个):

<xctk:IntegerUpDown FormatString="N0" Value="1" Increment="1" Maximum="100"/>
于 2012-09-04T03:44:41.467 回答
-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();
    }
}

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

于 2012-09-04T03:25:32.213 回答