用于在c#中检查数字的文本框方法
本文关键字:文本 方法 数字 检查 用于 | 更新日期: 2023-09-27 17:53:47
我正在创建一个具有大量用户输入的程序。大多数用户输入将在文本框中,需要只有数字条目。
目前,我只是使用TextChanged方法获取值,然后使其他按钮/复选框显示/隐藏基于条目。
我想创建一个方法或实现某种用途,检查何时输入到框中,以防止人们进行不正确的输入,修复他们所做的更改,或者创建一个消息框,告诉他们输入无效。
我目前有两种工作方式,但它们不能相互配合。
我有一个解析方法,将输入文本转换为Double,但我遇到的问题是,如果他们利用退格按钮然后重新输入他们的数字,它将无法识别输入(这是打开/关闭其他文本框/复选框所需要的)。这对TextChanged方法有效。
我有一个正则表达式集,利用PreviewTextInput和KeyDown方法。这在不允许某些输入的情况下工作得很好,但它不适用于textchanged方法(或者至少我不明白如何指向它)。
我需要一些指导,如何创建一个可行的方法来检查输入到文本框,不需要我的用户按下按钮为每个条目(aka检查实时)。
我想这就是你要找的。
绑定。验证
对于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...
}