所以我有一个TextBox
只允许数字和小数点。我希望用户只被允许输入 1 个小数点。
以下是PreviewTextInput
事件触发的代码:(有些代码有点多余,但可以完成工作)
private void PreviewTextInput(object sender, TextCompositionEventArgs e)
{
TextBox textBox = (TextBox)sender;
if (e.Text == ".")
{
if (textBox.Text.Contains("."))
{
e.Handled = true;
return;
}
else
{
//Here I am attempting to add the decimal point myself
textBox.Text = (textBox.Text + ".");
e.handled = true;
return;
}
}
else
{
e.Handled = !IsTextAllowed(e.Text);
return;
}
}
private static bool IsTextAllowed(string text)
{
Regex regex = new Regex("[^0-9.-]+"); //regex that matches disallowed text
return !regex.IsMatch(text);
}
问题是输入的第一个小数点在后面跟着一个数字时才“有意义”。因此,如果用户输入123.
并且您要设置 abreakpoint
并检查textBox.text
它的值将是123
. 我知道这种情况正在发生,因为textBox
它绑定到 aDouble
所以它试图“聪明”并忘记那些当前“无关紧要”的值(“。”)。
我的代码应该没有任何问题,我只是希望强制textBox
跳过一些不必要的(?)自动格式化。
有没有办法让textBox
“关心”第一个小数点?
从未回答的可能重复项。
或者
*是否有不同的方法来限制小数位数?”(我在这方面做了很多研究,我认为没有其他选择。)