繁体   English   中英

用于检查C#中的数字的TextBox方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM