[英]TextBox method for checking numerics in C#
我正在创建一个有很多用户输入的程序。 大多数用户输入将在TextBox中,只需要数字条目。
目前,我只是使用TextChanged方法获取值,然后根据条目使其他按钮/复选框显示/隐藏。
我想创建一个方法或实现某种利用率,检查何时输入框,防止人们输入错误,修复他们所做的更改,或创建一个消息框,告诉他们他们的输入无效。
我目前有两种方式,但他们不相互合作。
我有一个解析方法,将输入文本转换为Double但我遇到的问题,如果他们使用退格按钮然后重新输入他们的数字,它将无法识别输入(这是打开/关闭其他所需的文本框/复选框)。 这适用于TextChanged方法。
我有一个使用PreviewTextInput和KeyDown方法的正则表达式集。 这非常适用于不允许某些输入,但它不适用于textchanged方法(或者至少我不明白如何指向它)。
我需要一些指导如何创建一个可行的方法来检查文本框中的输入,这不需要我的用户按下每个条目的按钮(也就是检查实时)。
我想这就是你要找的东西。
Binding.Validation
对于Int来说,它就像绑定到Int一样简单。
如果您需要能够通过按钮增加/减少值,请使用NumericUpDown或其子类之一。
如果您只需要一个文本框,则必须处理PreviewKeyDown()
事件。 您需要手动检查按下的有效/无效键。 按下无效键时,设置e.Handled = true;
防止关键事件发生隧道效应。
我真的无法完全理解,但据我说,你试图阻止文本框采取无效输入,同时你想使用TextChanged方法,所以你可以这样做:
<TextBox Name="txtAddNumber" TextChanged="txtAddLable_TextChanged" PreviewTextInput="txtAddNumber_PreviewTextInput" />
和txtAddNumber_PreviewTextInput方法:
private void txtAddNumber_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
char c = Convert.ToChar(e.Text);
if (!Char.IsLetter(c))
e.Handled = false;
else
e.Handled = true;
base.OnPreviewTextInput(e);
}
如果你想在输入的基础上处理一些错误消息,你可以这样做:
private void txtAddNumber_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
char c = Convert.ToChar(e.Text);
if (!Char.IsLetter(c))
{
// Put your Logic here according to requirement
e.Handled = false;
}
else
{
// Put your Logic here according to requirement
e.Handled = true;
}
base.OnPreviewTextInput(e);
}
和
e.Handled = false
表示输入为数字, e.Handled = true
表示输入为非数字。
你的txtAddLable_TextChanged方法会像:
private void txtAddLable_TextChanged(object sender, TextChangedEventArgs e)
{
// Logics here...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.