我正在创建一个拥有大量用户输入的程序。大多数用户输入将在TextBox中,只需要数字条目。
目前,我只是使用TextChanged方法获取值,然后根据条目显示/隐藏其他按钮/复选框。
我想创建一种方法或实现某种利用率,检查何时输入框,防止人们输入错误,修复他们所做的更改,或创建一个消息框,告诉他们他们的输入无效。
我目前有两种方式,但他们不能互相合作。
我有一个解析方法,它将输入文本转换为Double但我遇到的问题,如果他们使用退格按钮然后重新输入他们的数字,它将无法识别输入(需要打开/关闭其他文本框/复选框)。这适用于TextChanged方法。
我有一个使用PreviewTextInput和KeyDown方法的正则表达式集。这非常适用于不允许某些输入,但它不适用于textchanged方法(或者至少我不明白如何指向它)。
我需要一些关于如何创建一种可行的方法来检查文本框输入的指导,这些方法不需要我的用户按下每个条目的按钮(也就是实时检查)。
答案 0 :(得分:2)
我认为这就是你要找的东西 Binding.Validation
对于Int来说,只需绑定到Int就可以了。
答案 1 :(得分:1)
如果您需要通过按钮使用NumericUpDown或其子类之一来增加/减少值。
如果您只需要一个文本框,则必须处理PreviewKeyDown()
事件。您需要手动检查按下的有效/无效键。当按下无效键时,您设置e.Handled = true;
以防止按键事件发生隧道效应。
答案 2 :(得分:0)
我真的无法完全理解,但据我说,你试图阻止文本框采取无效输入,同时你想使用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...
}