我怎样才能有一个带两个小数点的 WPF 数字文本框,例如:
它将从 0.00 开始,当用户输入 1 时,值将是 0.01,然后当用户输入 2 时,值将是 0.21。
当用户键入 5003 时,值为 30.05。
谢谢你。
当然,您始终可以按照@JesseJames 的建议实现一个。但是,我建议您更好地使用现有的,我相信Extended WPF Toolkit是您所需要的,正是 IntegerUpDown(您可以指定您需要的掩码,它带有 5 个):
<xctk:IntegerUpDown FormatString="N0" Value="1" Increment="1" Maximum="100"/>
您可以在 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 数字!