C#WPF如何在文本框中仅使用数值
我使用一个WPF应用程序,我只允许文本框中有数字。在WindowsForm应用程序中,我知道我必须如何实现它。C#WPF如何在文本框中仅使用数值,c#,wpf,events,numeric,C#,Wpf,Events,Numeric,我使用一个WPF应用程序,我只允许文本框中有数字。在WindowsForm应用程序中,我知道我必须如何实现它。 不幸的是,WPF中没有按键,“代码”也不再起作用 它是如何正确的?事件是什么 在这里,您可以看到在Windows窗体中运行的旧代码: private void tbKreisdurchmesser_KeyPress(object sender, KeyEventArgs e) { if (char.IsNumber(e.Key) || e.KeyChar==".")
不幸的是,WPF中没有按键,“代码”也不再起作用 它是如何正确的?事件是什么
在这里,您可以看到在Windows窗体中运行的旧代码:
private void tbKreisdurchmesser_KeyPress(object sender, KeyEventArgs e)
{
if (char.IsNumber(e.Key) || e.KeyChar==".")
{
}
else
{
e.Handled = e.KeyChar != (char)Keys.Back;
}
}
您可以为textbox添加PreviewTestInput事件,并使用正则表达式验证该事件中的值
private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
var textBox = sender as TextBox;
e.Handled = Regex.IsMatch(e.Text, "[^0-9]+");
}
您可以为textbox添加PreviewTestInput事件,并使用正则表达式验证该事件中的值
private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
var textBox = sender as TextBox;
e.Handled = Regex.IsMatch(e.Text, "[^0-9]+");
}
尝试按preview键向下您可以简单地将文本绑定到视图模型中的数字类型(例如,
double
)。其次,在绑定到数字类型时,您需要将属性、双向模式和UpdateSourceTrigger指定为PropertyChanged,然后在setter中调用PropertyChanged。这也很酷,因为当文本字段无效时,它会在文本字段上着色。请尝试按preview键向下。您只需将文本绑定到视图模型中的数字类型(例如double
)。其次,绑定到数字类型时,您需要将属性、双向模式和UpdateSourceTrigger指定为PropertyChanged,然后在setter中,调用PropertyChanged。这也很酷,因为当文本字段无效时,它会在文本字段上着色。这是从该方法复制的答案,不处理空格键。这是从该方法复制的答案,不处理空格键。